我对 cookie 如何与 Scrapy 一起工作以及您如何管理这些 cookie 感到有些困惑。
这基本上是我正在尝试做的简化版本:
网站的运作方式:
当您访问该网站时,您会获得一个会话 cookie。
当您进行搜索时,网站会记住您搜索的内容,因此当您执行诸如转到下一页结果之类的操作时,它会知道它正在处理的搜索。
我的脚本:
我的蜘蛛有一个 searchpage_url 的起始 url
搜索页面被请求parse()
并且搜索表单响应被传递给search_generator()
search_generator()
然后yield
使用大量搜索请求FormRequest
和搜索表单响应。
这些 FormRequest 中的每一个以及后续的子请求都需要拥有自己的会话,因此需要拥有自己的单独 cookiejar 和自己的会话 cookie。
我已经看到文档的部分讨论了阻止合并 cookie 的元选项。这实际上是什么意思?这是否意味着发出请求的蜘蛛将在其余生中拥有自己的 cookiejar?
如果 cookie 然后在每个蜘蛛级别上,那么当产生多个蜘蛛时它是如何工作的?是否可以只让第一个请求生成器产生新的蜘蛛并确保从那时起只有那个蜘蛛处理未来的请求?
我假设我必须禁用多个并发请求。否则一个蜘蛛会在同一个会话 cookie 下进行多次搜索,而未来的请求只会与最近的搜索有关?
我很困惑,任何澄清都会受到极大的欢迎!
编辑:
我刚刚想到的另一个选项是完全手动管理会话 cookie,并将其从一个请求传递到另一个请求。
我想这意味着禁用 cookie.. 然后从搜索响应中获取会话 cookie,并将其传递给每个后续请求。
这是你在这种情况下应该做的吗?