python3 多线程爬去mzitu图片

今天学习了利用多线程爬妹子图网站的图集,最后实现功能:给定页码爬取当前页码全部图片,并按照图集名称命名图集文件夹;利用多线程技术,大大加快爬虫速度。
地址如下:

https://github.com/wzyonggege/Mzitu-Crawler

详细解析爬虫思路:

一、需要用到的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)

你可能感兴趣的:(python3爬虫)