我想使用scrapy刮刮有一个搜索表单的网站,但它很难做并发请求给出它如何工作: 当您执行搜索时,它创建一个环绕搜索的会话,并且您不能同时进行多次搜索,否则无法再访问先前搜索的结果。如何刮scrapy中的搜索表格
例如:
启动带条件的搜索,它重定向到一个网页,一个ID和每个结果的细节重用此ID:
list.do?anchor=51edc79.0
details.do?anchor=51edc79.0.0
details.do?anchor=51edc79.0.1
如果我开始一个新的搜索标准B,这是一个新的ID:
list.do?anchor=5200109.0
details.do?anchor=5200109.0.0
details.do?anchor=5200109.0.1
但现在第一搜索的结果也不会显示内容:
details.do?anchor=51edc79.0.2 => cannot find
details.do?anchor=51edc79.0.3 => cannot find
我一次只能做一个请求,以确保第二次搜索不会开始,直到获取第一次搜索的所有结果,但我仍然想要并发请求以获得一个结果搜索更快。 所以这个想法将不会开始第二次搜索,直到搜索到所有搜索结果。
你会怎么做scrapy?
当我允许多个请求(CONCURRENT_REQUESTS
)和使用的优先级,第二个搜索开始都是从第一个搜索页面中之前完成。
感谢
感谢您的回复。我尝试过,但是我在搜索中看到的ID实际上并不是真正的会话,所以当我使用cookiejar中的新条件开始新搜索时,它会出错(服务器以500响应,因为我认为没有创建会话服务器)。看起来真正的会话是在访问主页时用起始url创建的。所以我必须在主页上使用cookiejar('Home - > Search - > Result')。这使得它变得复杂起来,因为我使用主页作为获取标准值的起点,然后才开始对每个标准进行搜索。 : -/ – Ted
然后你必须控制自爬网开始以来的cookiejars,检查我更新的答案 – eLRuLL
嗯,也许我错过了一些东西,但从我的理解,在每个会话中,我仍然有原始问题:在一个会话中,在取得所有结果之前,我不能移动到下一个搜索。我会看看我是否可以用不同的方式使用cookiejar。不管怎么说,还是要谢谢你。 – Ted