我看到有几种类型的响应,但是我如何向Scrapy发送信号以返回HtmlResponse呢?
我认为我们的目标是实现def parse(self, response: HtmlResponse):
。或者应该以其他方式使用它?有usag的例子吗?
这是Scrapy教程中的例子。我如何在这里使用HtmlResponse而不是默认的?
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'https://quotes.toscrape.com/page/1/',
'https://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
1条答案
按热度按时间yqkkidmi1#
Scrapy尝试识别它得到的响应的类型,并使用特定的类型调用
parse
。据我所知,从没有使用基类型Response
调用parse。响应识别是在'scrapy/ www.example.com中responsetypes.py通过某种方法完成的:mimetype、主体、报头等。以下是mimetype标识Map:
由于
parse
是通过其中一个子类调用的,开发人员可以直接在response
参数中访问它。