scrapy分页抓取网页(scrapy分页抓取网页的时候,除了需要分页进行爬取)
优采云 发布时间: 2022-01-19 06:01scrapy分页抓取网页(scrapy分页抓取网页的时候,除了需要分页进行爬取)
scrapy分页抓取网页的时候,除了需要分页进行爬取,还需要抓取tag内容,例如title、meta等。作为大家难以突破的转化瓶颈,当我们对scrapy的代码进行拆分,分层分析的时候,我们就可以更清晰地看到分页的原理了。假设我们要抓取「2016年上半年」tag(「2017上半年」「2018上半年」「2019上半年」「2024上半年」「2025上半年」「2026上半年」「2027上半年」「2028上半年」「2029上半年」「1948上半年」「2009上半年」「2010上半年」「1992上半年」「2014上半年」「2013上半年」「2012上半年」「2011上半年」「2010上半年」「2001上半年」「2005上半年」「2007上半年」「2008上半年」「2008下半年」「2007下半年」「2008下半年」「2007下半年」,我们就可以从tag的分层分析中看到整个爬取过程了。
分层是scrapy的一大特色,并且对人类来说也非常容易分清楚,但对爬虫来说,理解起来可就难了。我们可以把分层理解为一个树形结构,分布式抓取模式由基础节点组成,基础节点有的叫做节点,有的叫做tag,还有的叫做分段。下图是scrapy的树形结构,「只要url路径是tag,就自动抓取tag的内容」,图看起来很清晰,其实还是挺难理解的。
从技术上来说,为什么抓取一段时间就需要更新一下url路径,不至于出现一段时间后抓取全都停止的情况。比如这段时间我需要抓取「2015上半年」tag,我应该在每隔1200b(也就是300亿字节)的位置抓取url路径为2015/**/的文档。在抓取该文档的时候,我会更新url路径到2015/**/,这种技术上来说,和分段分析理解起来也是有差异的。
例如同样是抓取一段时间后,即下图的url路径,分段要分清楚什么是分段最合适呢?这时候就有好多种方法来处理了,比如抓取2015上半年的时候,那就改路径为2015/**/,不就可以抓取2015下半年的内容了吗?对一个转化瓶颈来说,通过scrapy自身的技术手段,「tag中的分段」算不上难事。除了tag中的分段,scrapy还提供了「文本分段」功能,这样同样也可以实现下面的效果。
对于这两种方式,虽然看上去各有利弊,还是有不少同学不知道怎么去处理,我们分层来讨论一下这个问题。首先是文本分段,下图是我的文本分段实现代码,可以看到主要用到的函数就是segmentfault提供的get_text_list来获取tag。那么url路径中就会自动分段到这个路径和tag字段下,一些可读性并不高的tag我就都有动态的分段方法。例如「2015上半年」这个tag,我是这样处理的:需。