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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值