1. 程式人生 > >python3 多執行緒爬去mzitu圖片

python3 多執行緒爬去mzitu圖片

今天學習了利用多執行緒爬妹子圖網站的圖集,最後實現功能:給定頁碼爬取當前頁碼全部圖片,並按照圖集名稱命名圖集資料夾;利用多執行緒技術,大大加快爬蟲速度。 地址如下:

詳細解析爬蟲思路:

一、需要用到的package:

  1. requests:主要進行網際網路資料傳輸
  2. lxml:執行對HTML和XML的解析,使用XPATH方式,適用於HTML檔案中進行搜尋
  3. os:主要進行資料夾的建立,檔案的下載
  4. time:時間函式,設定延遲時間,儘量避免網站的反爬蟲措施
  5. multiprocessing.dummy :多執行緒,將一個任務劃分為多個執行緒同時進行,大大加快爬蟲速度

二、程式結構解析:

  1. def header(referer): 獲取網站請求頭偽裝瀏覽器行為;藉助referer反防盜鏈,防止網站發起網頁跳轉導致內容出錯
  2. def getPage(pageNum): 獲取網站頁碼,設定爬蟲目標的依據
  3. def getPiclink(url): 相關資料夾的建立以及圖片的下載
  4. 主函式:根據設定的頁碼實施檔案下載,並建立4執行緒同時執行

三、具體細節討論

  1. 'Referer': '{}'.format(referer),

  2. selector=html.fromstring(requests.get(baseUrl).content)

  3. for i in selector.xpath('//ul[@id="pins"]/li/a/@href'):

  4. 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)
    
  5. link='{}/{}'.format(url,i+1)

  6. pool.map(getPiclink,p)