爬虫新玩法——通过队列来提高爬虫性能

标签(空格分隔): 爬虫


事情的起因是亚马逊鞋品的新年优惠,其实这种所谓的优惠往往力度不大,然而再小的羊毛也是羊毛不是。因为商品太多,而且显示的还是优惠前的价格,所以人肉挑实在是太辛苦了,于是乎万能的py就必须启动了。

还是按照以往那样来进行需求分析:
1.获取优惠商品栏目下所有商品的超链接
2.获取这些商品的折后价格、星级还有热销排行榜,自己分别对其设置权数,算出一个综合评分。

,我们需要提取的商品链接的值是类似。class=’a-size-small a-color-secondary’下的,用bs4处理就好了,打开后的网页处理方法在之前的文章也提到过,在这里就不提了。这次最主要的是对爬虫的性能进行优化。

之前做过一个D版帖子的爬虫,也是这种先获取列表再打开类型的。一开始我采用的是非常单一的,获取完所有帖子的超链接然后再打开。唯一的优化就是采用多核心。这样做的缺点非常明显就是一单获取过程出错,后面对超链接包含内容的分析也无法进行。

其实最理想的处理方法就是每抓取一个超链接就分析一个超链接,百度之,发现这就是所谓的消费者生产者模型,用py现成的queue模块就能搞定。其实只要知道queue.put()是往队头插入一个元素,queue.get()是读取队尾元素并删除就好了。这样我们只要把获取超链接写成一个方法并存在队列里,对超链接的读取写成另一个方法,同时读取队列就好了。