Scrapy不会调用刮刀功能

时间:2017-05-05 12:13:32

标签: python-3.x scrapy

我使用Scrapy写了一个刮刀,我有一个奇怪而简单的问题。

我使用u / p登录来抓取数据但有时网站会将我重定向到/login.asp页面,其中包含我将要抓取的网址的redir = query参数。所以我添加了re_login_if_needed()函数,我把它称为parse()回调的第一个语句。我的想法是检查response.url是否有重定向URL,以便我可以重新登录该站点并继续像以前一样使用parse()进行报废。

问题是从不执行re_login_if_needed()函数。我放在那里的任何DEBUG PRINT语句都不会打印出来。

怎么可能?

在课堂上我有:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):

        self.re_login_if_needed(response)

        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

    def re_login_if_needed(self, response):
        # check if response.url contains redirect code, i.e: "/login.asp?redir="
        # and relogin ...

0 个答案:

没有答案