開(kāi)發(fā)環(huán)境windows7/10python3.5.2模擬人工操作
優(yōu)采云 發(fā)布時(shí)間: 2021-04-24 06:37開(kāi)發(fā)環(huán)境windows7/10python3.5.2模擬人工操作
python爬蟲(chóng)scrapy + Selenium + mysql,抓取微信搜狗,各家銀行開(kāi)具的官方賬戶(hù)文章
要求
由于工作需要,公司要求抓取指定微信公眾號文章和各大銀行官方網(wǎng)站發(fā)布的營(yíng)銷(xiāo)信息。也有招標信息。經(jīng)過(guò)調查,我發(fā)現結合使用python的scrapy和硒來(lái)模擬手動(dòng)操作?;艘恍r(shí)間才能完成任務(wù)。這是一條記錄。
開(kāi)發(fā)環(huán)境
windows7 / 10
python 3. 5. 2
mysql 5. 5
草率的1. 6
pycharm2018
Google Chrome 7 0. 0. 353 8. 110(正式版)(64位)
安裝
通常在Windows上安裝python 3. 5. 2。我選擇了官方網(wǎng)站的64位版本。請注意:
1、添加環(huán)境變量:
圖片
python所在的目錄:C:\ Users \ user \ AppData \ Local \ Programs \ Python \ Python35;
pip所在的目錄:C:\ Users \ user \ AppData \ Local \ Programs \ Python \ Python35 \ Scripts;
分析:將以上兩條路徑添加到環(huán)境變量中。
圖片
圖片
2、 pycharm安裝。
使用pycharm作為編輯器,因為它具有強大的導入功能。他的某些導入軟件包對于管理自己導入的第三方軟件包非常方便。
圖片
圖片
*******************************注意************** * *************
如果您正在下載和安裝scrapy,則可以在報告Twisted版本錯誤且pip不成功時(shí)手動(dòng)安裝Twisted-1 8. 9. 0-cp35-cp35m-win_amd6 4. whl。
1)確保您的點(diǎn)子版本是最新的
2)運行pip安裝路徑\ Twisted-1 8. 7. 0-cp37-cp37m-win_amd6 4. whl
參考:
參考:?gohlke / pythonlibs /#twisted
Twisted-1 8. 7. 0-cp37-cp37m-win_amd6 4. whl我是從上面的鏈接下載的
3、要使用硒作為模擬手動(dòng)操作的自動(dòng)測試,您需要先下載相應的瀏覽器驅動(dòng)程序
因為我使用的是Google Chrome瀏覽器,所以我下載的也是Google Chrome瀏覽器驅動(dòng)程序
參考:
參考:
現在您可以正式工作了! (手動(dòng)狗頭)爬行微信搜狗
圖片
圖片
圖片
由于微信公眾號已發(fā)布到最新文章,因此可以在微信搜狗頁(yè)面上找到指定官方賬號所發(fā)布的最新內容,因此我們的目標非常明確,即可以抓取該微信發(fā)布的最新消息。微信搜狗的官方帳戶(hù)。
1、確認抓取鏈接
經(jīng)過(guò)分析,具有爬網(wǎng)的鏈接具有以下特征:
鏈接組成:官方帳號
使用scrapy抓取與該鏈接相對應的靜態(tài)內容后,您會(huì )發(fā)現與該鏈接相對應的標記將被重定向到輸入302輸入驗證碼的頁(yè)面,這可能是反挑剔技術(shù)的微信搜狗。 (但是有解決方案)
圖片
圖片
圖片
這時(shí),我們將使用功能強大的硒作為模擬手動(dòng)點(diǎn)擊的自動(dòng)化測試工具??梢允褂胮ython下載此第三方軟件包。
直接上傳代碼
class SeleniumMiddleware(object):
def __init__(self):
self.cookies_file_path = COOKIES_FILE_PATH
def process_request(self, request, spider):
options = webdriver.ChromeOptions()
# 設置中文
options.add_argument('lang=zh_CN.UTF-8')
#options.add_argument('--headless')
#options.add_argument('--disable-gpu')
#options.add_argument('--remote-debugging-port=9222')
# 更換頭部
options.add_argument('user-agent='+request.headers['User-Agent'].decode(encoding='utf-8'))
browser = webdriver.Chrome(
executable_path=SELENIUM_CHROME_DIRVER_LOCAL_PATH,
chrome_options=options)
wait = WebDriverWait(browser, 15)
browser.get(request.url)
'''設置selenium瀏覽器的cookie'''
with open(self.cookies_file_path, 'r')as f:
listCookie = json.loads(f.read())
time.sleep(1)
browser.delete_all_cookies();
for cookiein listCookie:
browser.add_cookie({
# 'domain': cookie['domain'],
# 'httpOnly': cookie['httpOnly'],
'name': cookie['name'],
# 'path': cookie['path'],
# 'secure': cookie['secure'],
'value': cookie['value'],
# 'expiry': None if 'expiry' not in cookie else cookie['expiry']
})
# browser.close()
browser.get(request.url)
time.sleep(5)
# 根據公眾號查找
gzhDetail = wait.until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, 'ul.news-list2>li:first-child>div.gzh-box2>div.txt-box>p:first-child>a')))
gzhDetail.click()
time.sleep(3)
# 更換到剛點(diǎn)擊開(kāi)的頁(yè)面
newWindowHandler = browser.window_handles[-1]
browser.switch_to.window(newWindowHandler)
#返回頁(yè)面
true_page = browser.page_source
res=HtmlResponse(request.url,body = true_page,encoding ='utf-8',request = request,)
#記錄搜狗微信公眾臨時(shí)生成的gotoLink的地址,注意該地址是微信搜狗經(jīng)常會(huì )切換的地址。
res.meta['wxsgGzhDetailUrl']=browser.current_url
browser.quit()
return res
def process_response(self, request, response, spider):
return CodeMiddleware().process_response(request,response,spider)
如果成功模擬了手動(dòng)單擊,則不會(huì )跳到302輸入驗證碼,因此無(wú)需使用編碼平臺。成功單擊后,進(jìn)入正式帳戶(hù)發(fā)布文章頁(yè)面。此時(shí),您可以檢索官方帳戶(hù)發(fā)布的文章的標題,簡(jiǎn)介和圖片。 (訪(fǎng)問(wèn)該頁(yè)面時(shí),可以直接引用一個(gè)標簽來(lái)輸入詳細的文章,這意味著(zhù)可以向下檢索特定的文章內容。)
最后
我的github:其中有更詳細的代碼。記住要給星星,還有其他例子。本文中的示例位于weixinsougou文件夾中
備注
1、解決Windows命令行中找不到的pip命令的方法:
1)找到安裝python.exe的文件夾
2)添加Script文件夾路徑到環(huán)境變量當中。環(huán)境:C:\Users\user\AppData\Local\Programs\Python\Python35\Scripts
2、解決了在安裝scrapy時(shí)無(wú)法安裝scrapy的問(wèn)題。當報告扭曲版本錯誤時(shí):
1)手動(dòng)安裝Twisted-18.9.0-cp35-cp35m-win_amd64.whl文件即可解決
2)運行 pip install 你的路徑\Twisted-18.7.0-cp37-cp37m-win_amd64.whl
參考:
參考:?gohlke / pythonlibs /#twisted
3、該項目使用硒,因此請安裝Google Chrome。以及相應的Google Chrome瀏覽器驅動(dòng)程序。
參考:
參考: