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