python多线程爬取大量数据_浅析Python多线程爬取网站数据

利用Python的爬虫抓取网站公开信息,能够便利的处理很多事情。这里用一个图书网站为例,通过差串行爬取方式,并导入到excel表中,爬去的顺利,但是最终的耗时却非常长,仅仅200多页的都要花费将近10分钟的时间,这显然是远远达不到想要的效果的,所以这就需要提高爬行效率了,这里就简单分析利用python的多线程机制来完成。

仔细想想就可以发现,其实爬10页(每页25本),这10页爬的先后关系是无所谓的,因为写入的时候没有依赖关系,各写各的,所以用串行方式爬取是吃亏的.显然可以用并发来加快速度,而且由于没有同步互斥关系,所以连锁都不用上.

既然考虑并发,那么就有多进程和多线程两种方式,各自的优缺点比较可以见:这里简单来说,多进程稳定,因为一个进程挂掉其他进程不受影响,但是开销大,建立太多进程会消耗系统大量资源,并且切换慢,因为要通过系统进程调度.

多线程作为"轻量级的进程",是操作系统调度的基本单位,切换快速,只消耗极少的资源,但是缺点就是一个线程崩掉整个进程包括其他线程都会崩掉,所以稳定性欠佳.

这里虽然进程数/线程数很少(只有10个),即使采用多进程也不会有多大的开销,但是为了更快地爬取,且爬取豆瓣这样的大站,稳定性不会太差,所以还是采用多线程比较实惠.

多线程有两个模块,一个Thread模块,一个threading模块,但是前者现在用的很少了,后者更加方便实用.所以采用后者.

在程序中实用线程有两种方法,一种是自己写一个class,并重写此class中的__init__方法和run()方法,创建一个这个class的对象并调用start()时run()方法自动调用.另一种是在threading.Thread构造函数中传入要用线程运行的函数及其参数.我采用的是后者.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值