我试图使用Scrapy递归地刮取一个用ViewState构建的网站的搜索结果。因此,我从一组关键字开始,很少有两个:
key1, key2
然后,每个关键字都有可能生成更多的关键字,并返回需要解析的多页结果。这是通过spiderparse
函数的条件分支完成的,该函数生成带有新关键字或“下一页”指令的scrapy.FormRequest
对象
我的问题是订货。虽然scrapy声称可以使用'CONCURRENT_REQUESTS': 1
选项强制它进入深度优先顺序,但这种递归爬网似乎不是这样。到目前为止,我一直看到在解析原始密钥时生成的任何新请求都发生在整个原始请求集之后。因此,如果首先执行key1
,并产生对key1.1
的新请求,则执行顺序为
key1
key2
key1.1
在我的特定用例中,这适用于新关键字,但是站点不会处理“下一页”请求,除非它们立即跟随第1页的请求。这使得scrapy在功能上对我来说毫无用处,除非我能想出如何对这些请求强制执行刮削命令。优先权似乎也没有任何影响
有人能给我一些指导吗?这是不是超出了Scrapy的设计范围
^{} kwarg 设计用于影响调度程序,允许您将您的需求通知Scrapy
默认情况下,所有} 或者,当然,通过手动创建下一个页面
Request
都具有相同的优先级,因此Scrapy只选择一个;但是,由于您需要立即操作下一个页面,因此您希望给它一个priority=1000
,这可以通过^{Request
和yield
或者return
来完成相关问题 更多 >
编程相关推荐