在Scrapy中坚持会话Cookie

时间:2016-05-27 04:36:32

标签: python cookies web-scraping scrapy scrapy-spider

我正在抓取一个网站,其中包含我需要点击的接受条款表单。当我单击按钮时,我被重定向到需要抓取的资源。我有基本的机制工作,即初始点击工作,我得到一个会话,一切顺利,直到会议超时。然后由于某种原因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。

1 个答案:

答案 0 :(得分:1)

默认情况下启用Cookie并传递每次回调,确保在settings.py中使用COOKIES_ENABLED=True启用Cookie。

您还可以使用COOKIES_DEBUG=True(默认情况下为False)为其启用调试日志,并检查Cookie是否正确传递,因此您的问题可能与其他内容有关。