Python 在不下载正文的情况下检查scrapy中的响应标头
有些pdf URL不以“.pdf”结尾,因此,我们只能在检查响应标题后才能找到。我希望避免下载此类PDF。在Scrapy中,在响应完全下载后检查标题很容易。如何下载和检查响应头,并在以后下载正文?使用HTTP请求方法Python 在不下载正文的情况下检查scrapy中的响应标头,python,scrapy,Python,Scrapy,有些pdf URL不以“.pdf”结尾,因此,我们只能在检查响应标题后才能找到。我希望避免下载此类PDF。在Scrapy中,在响应完全下载后检查标题很容易。如何下载和检查响应头,并在以后下载正文?使用HTTP请求方法HEAD获取响应头。然后检查内容类型,在此基础上,您可以提出相同的请求,这次使用GET方法。请参见以下示例: # -*- coding: utf-8 -*- from __future__ import print_function, unicode_literals import
HEAD
获取响应头。然后检查内容类型
,在此基础上,您可以提出相同的请求,这次使用GET
方法。请参见以下示例:
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
import scrapy
class DummySpider(scrapy.Spider):
name = 'dummy'
def start_requests(self):
yield scrapy.Request('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
callback=self.parse_headers, method='HEAD')
def parse_headers(self, response):
if response.headers['Content-Type'].startswith('application/pdf'):
yield response.request.replace(callback=self.parse, method='GET')
def parse(self, response):
print(len(response.body))
谢谢,这很有效。如果您知道,是为“GET”部件建立了新连接,还是为“HEAD”部件重用了连接?我担心做两次TLS握手。这超出了我的知识范围,对不起