我正在抓取一个网站,其中包含我需要点击的接受条款表单。当我单击按钮时,我被重定向到需要抓取的资源。我有基本的机制工作,即初始点击工作,我得到一个会话,一切顺利,直到会议超时。然后由于某种原因Scrapy确实被重定向,但响应URL没有得到更新,所以我得到重复的项目,因为我使用URL来检查重复。
例如我要求的网址是:
https://some-internal-web-page/Records/Details/119ce2b7-35b4-4c63-8bd2-2bfbf77299a8
但是当会议到期时我得到:
https://some-internal-web-page/?returnUrl=%2FRecords%2FDetails%2F119ce2b7-35b4-4c63-8bd2-2bfbf77299a8
这是我的代码:
# function to get through accept dialog
def parse(self, response):
yield FormRequest.from_response(response, formdata={"value":"Accept"}, callback=self.after_accept)
# function to parse markup
def after_accept(self, response):
global latest_inspection_date
urls = ['http://some-internal-web-page/Records?SearchText=&SortMode=MostRecentlyHired&page=%s&PageSize=25' % page for page in xrange(1,500)]
for u in urls:
yield Request( u, callback=self.parse_list )
所以我的问题是,如何持久化和/或刷新会话cookie,以便我不会获得重定向URL而不是我需要的URL。
答案 0 :(得分:1)
默认情况下启用Cookie并传递每次回调,确保在settings.py
中使用COOKIES_ENABLED=True
启用Cookie。
您还可以使用COOKIES_DEBUG=True
(默认情况下为False
)为其启用调试日志,并检查Cookie是否正确传递,因此您的问题可能与其他内容有关。