python3 多執行緒爬去mzitu圖片
阿新 • • 發佈:2018-12-13
今天學習了利用多執行緒爬妹子圖網站的圖集,最後實現功能:給定頁碼爬取當前頁碼全部圖片,並按照圖集名稱命名圖集資料夾;利用多執行緒技術,大大加快爬蟲速度。 地址如下:
詳細解析爬蟲思路:
一、需要用到的package:
- requests:主要進行網際網路資料傳輸
- lxml:執行對HTML和XML的解析,使用XPATH方式,適用於HTML檔案中進行搜尋
- os:主要進行資料夾的建立,檔案的下載
- time:時間函式,設定延遲時間,儘量避免網站的反爬蟲措施
- multiprocessing.dummy :多執行緒,將一個任務劃分為多個執行緒同時進行,大大加快爬蟲速度
二、程式結構解析:
- def header(referer): 獲取網站請求頭偽裝瀏覽器行為;藉助referer反防盜鏈,防止網站發起網頁跳轉導致內容出錯
- def getPage(pageNum): 獲取網站頁碼,設定爬蟲目標的依據
- def getPiclink(url): 相關資料夾的建立以及圖片的下載
- 主函式:根據設定的頁碼實施檔案下載,並建立4執行緒同時執行
三、具體細節討論
-
'Referer': '{}'.format(referer),
-
selector=html.fromstring(requests.get(baseUrl).content)
-
for i in selector.xpath('//ul[@id="pins"]/li/a/@href'):
-
sel=html.fromstring(requests.get(url).content) total=sel.xpath('//div[@class="pagenavi"]/a[last()-1]/span/text()')[0] title=sel.xpath('//h2[@class="main-title"]/text()')[0] dirName = u"【{}P】{}".format(total, title)
-
link='{}/{}'.format(url,i+1)
-
pool.map(getPiclink,p)