在scrapy中获取重定向的URL时出错:Python

时间:2018-07-29 23:34:07

标签: python python-3.x web-scraping scrapy

我正在使用代码:

def parse_find(self, response):
    Download_URL = "https://download.example.com/b/zMTY"
    request = Request(Download_URL, callback=self.parse_final)

    yield request

def parse_final(self, response):
    redirected_URL = response.url

    FileName = response.headers['Content-Disposition']  

    yield{   "Download_URL":redirected_URL,
             "FileName":FileName}

获取重定向的网址及其标头,但小巧的地方提供了调试功能:

2018-07-30 04:41:49 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (
302) to <GET https://example.com/url> from <GET https://download.example.com/b/zMTY>
2018-07-30 04:41:51 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (
meta refresh) to <GET https://example.com> from <GET https://example.com/url>

必须注意,当我使用fetch在scrapy shell中提取此url时,它将抓取重定向的url和response.headers正常工作。

我正在使用Python 3.6.5和scrapy 1.5

2 个答案:

答案 0 :(得分:0)

这不是错误-这是debug日志。 Scrapy通知您重定向是出于调试目的。您可以使用LOG_LEVEL设置更改抓取日志级别。在开发环境之外,您应该将其设置为LOG_LEVEL = 'INFO'

答案 1 :(得分:0)

由于我无法通过抓取来完成此操作,因此我通过以下请求完成了操作:

    Down = requests.get(response.url,allow_redirects=False)
    if Down.status_code == 302:
        redirected_URL = Down.headers['location']