我正在使用代码:
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
答案 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']