Python爬虫-速度(3)

这篇博客介绍了如何通过多进程、多线程和异步协程提升Python爬虫的速度。针对学校就业网站改版后的爬虫代码,博主展示了普通爬虫的运行时间约为60s,而使用ProcessPoolExecutor实现的多进程爬虫平均耗时约10s,多线程爬虫平均耗时9s+,异步协程方案则同样在9s+。尽管这些方法能提高速度,但博主提醒不应过度优化,以免影响网站运维人员的正常生活。
摘要由CSDN通过智能技术生成

Python爬虫-速度(3)


018.11.11

Python爬虫-速度(1)
Python爬虫-速度(2)

前言

早之前是以为会一口气把爬虫这个系列了结的,但不知何故,居然没做到——我肯定不会怪罪自己的拖延症呀!只是有开头就得有结尾,毕竟我是那么那么注重仪式感的人。

再从GitHub把代码clone下来,发现不能用了。刨根问底,居然是学校就业网站改版,这倒令我惊奇。会是因为哪个老师或者学生确实无聊所以动了“美好校园”的念头?缘由于我来说肯定是不得而知的。

重写一份吧。结构上相比两个月前的代码是有所优化的,但不至于天壤之别。相似处多,所以不再单独对此次基础代码进行说明。

此篇目的是:基于(2)的提速方法,改写(1)爬虫代码。当然了,因为网页改版,接下来我会是基于新的代码来改写。

那就开始啦。

普通爬虫

此次代码对应目录:NewSchoolJobsCrawl

效果如下:在这里插入图片描述

在这里插入图片描述

多次运行,整个程序跑完在60s左右。
在这里插入图片描述

多进程提速

在ProcessPoolExecutor助攻下,多进程爬虫的实现真的会很简单。我们只需要把浏览页处理的逻辑提取出来(我把它放到了main()中),然后构建一个进程池去执行这部分的代码就好。这样说会很抽象,将下面的代码与普通爬虫的代码做对比,理解起来容易些。

def main(url):
    html, __ = get_one_html(url)
    if html:
        for title, url in extract_title_url(html):
            # 只保留公司名
            companyName = re.split(r"(|\(|\s", title)[0]
            mkdir(companyName)
            # 详情页面,详情页链接
            detailHtml, curUrl = get_one_html(join_url(url
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值