开发爬虫中不易关注的礼仪

开发爬虫中不易关注的礼仪

现在爬虫的框架越来越成熟,分布式非阻塞等等技术相继登场,就是为了满足Boss快速开发的需求。
对于微博知乎等大型网站来说,个人爬取的速度自然微不足道,毕竟nginx现在都已经突破了十万并发数。

但是

有些奇怪的网站会限制你的访问频率。

是的,他不是从技术层面上,设置奇怪的验证码或者将前端页面写到js脚本中,而是限制你访问的次数。此处的限制不单单是对IP的限制,否则使用代理就能很好得解决这个问题。

我在使用高并发的爬虫系统抓取数据的时候就遇到了这个问题。也使用了企业级代理,但是死活抓不动,总是报错connection timeout.

于是按下不表。

某天在抓取某个网站数据的时候,除了前端内容写在js中,没有其他任何反爬措施,就连url都是有规律的。于是我开心得使用selenium写了个小脚本开始跑。网页请求也很快很流畅,一切仿佛没那么糟。

但是

几分钟过去数据抓完后一看—————这个数据的格式不对啊,怎么少了一些东西?难道是我xpath写的不对?于是我换了个表达式。一分钟后————还是不对!这不科学啊!但是想到之前确实遇到过xpath不能完美匹配的,我以为是网页的问题,也没有深究,就换了个css_selector来定位。这次我谨慎了一下,调试运行走————还是不对啊!

我陷入了沉思:

突然我想到了: selenium使用浏览器进行解析是需要时间的!!!设置了一个sleep函数就好了。

于是我突然想起当年初学爬虫时候看到的一个忠告:爬虫访问网站的时候,最好能减缓速度,不能给网站带来很大的负担。

当前快节奏的开发环境下,还有谁记得这个礼仪呢?

再然后,我突然想到,既然使用了代理也没有用,他照封不误,那么有没有可能他在nginx上设置了最大并发访问数?

于是在原来的脚本里,我也添了一行sleep函数——效果出奇的好:甚至不用代理就能稳步前进。

是的,这样抓取还是稍微有点慢的。尝试了几个sleep的时间值以后,暂时认为这个网站的较优访问速度是每秒两次。公司有两个IP,于是每天可以抓取17万数据。这个数据体量上是很小,但相较于先前的每天700个数据,还是占有很大优势的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值