带ViewState的刮削递归刮削顺序

2024-09-27 01:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Scrapy递归地刮取一个用ViewState构建的网站的搜索结果。因此,我从一组关键字开始,很少有两个:

key1, key2

然后,每个关键字都有可能生成更多的关键字,并返回需要解析的多页结果。这是通过spiderparse函数的条件分支完成的,该函数生成带有新关键字或“下一页”指令的scrapy.FormRequest对象

我的问题是订货。虽然scrapy声称可以使用'CONCURRENT_REQUESTS': 1选项强制它进入深度优先顺序,但这种递归爬网似乎不是这样。到目前为止,我一直看到在解析原始密钥时生成的任何新请求都发生在整个原始请求集之后。因此,如果首先执行key1,并产生对key1.1的新请求,则执行顺序为

key1
key2
key1.1

在我的特定用例中,这适用于新关键字,但是站点不会处理“下一页”请求,除非它们立即跟随第1页的请求。这使得scrapy在功能上对我来说毫无用处,除非我能想出如何对这些请求强制执行刮削命令。优先权似乎也没有任何影响

有人能给我一些指导吗?这是不是超出了Scrapy的设计范围


Tags: 对象函数顺序网站分支指令关键字条件
1条回答
网友
1楼 · 发布于 2024-09-27 01:25:05

^{} kwarg设计用于影响调度程序,允许您将您的需求通知Scrapy

默认情况下,所有Request都具有相同的优先级,因此Scrapy只选择一个;但是,由于您需要立即操作下一个页面,因此您希望给它一个priority=1000,这可以通过^{}或者,当然,通过手动创建下一个页面Requestyield或者return来完成

相关问题 更多 >

    热门问题