互联网时代的到来,大数据的盛行,越来越多的公司选择爬虫来做一些数据采集,它不仅提高工作效率,还降低人工成本。都说时间就是金钱,往往爬虫的工作效率越高带来的收益也越高。但是事与愿违,很多企业客户在做数据抓取的时候工作效率非常低。是什么原因导致这种结果的 ?下文我们将从几方面阐述影响爬虫的工作效率的因素。

哪些因素会影响爬虫工作效率_多线程

1、爬虫ip服务器

首先就应该考虑这点,爬虫ip质量降低了,将会触发网站反爬机制影响爬虫工作效率,大多数公司能够第一个想到的也就是这个原因。

2、客户端环境因素

客户使用端也会影响到爬虫的工作效率,电脑硬件配置跟不上,例如:CPU、内存、宽带等,网络不稳定,CPU跑满,内存提示不足无法多线程并发都会直接影响到爬虫的工作效率。

3、目标网站服务器

要访问的目标网站也会导致工作效率低下,因为承载网站的服务器资源有限,而且各大网站服务器配置不同。因此有些小公司网站不适合大量访问。长时间大量访问网站,最直接的可能导致服务器宕机。

4、爬虫代码效率

爬虫的代码如果不够优化简便,效率低下也会影响工作效率。作为资深的程序员应该各方面考虑,一个是代码的简便性,二是针对业务需求代码可扩展性。随时增加工作量能够随时增加爬虫线程。

5、反爬虫策略

不同的目标网站对客户的反爬机制不同,所以需要针对不同的网站制定符合的反反爬策略。并且要跟随网站反爬策略随时升级反反爬策略。

上文就是影响爬虫工作效率的因素的一些见解,总之影响爬虫工作效率的因素并非单一,要从多方面考虑。

今天要用的爬虫其实是cpu把任务分配给了其他硬件进行操作,cpu只牵涉到了分配,其他不用自己处理,这样即使是多线程,轮询分配下任务并不降低什么效率,同样类型的IO操作,我们都可以使用多线程。

假设我们现在要获取几个网站的首页,我们可以采用多线程的方式,代码如下:

import requests

import threading

def fetch(url):

response = requests.get(url)

print('Get %s: %s' % (url, response))

h1 = threading.Thread(target = fetch, args = ("https://jshk.com.cn/",))

h2= threading.Thread(target = fetch, args = ("https://www.zhihu.com/​​",))

h3= threading.Thread(target = fetch, args = ("​​https://www.taobao.com/​​",))

h1.start()

h2.start()

h3.start()

h1.join()

h2.join()

h3.join()