首页 > 解决方案 > scraper.http.HtmlResponse 类构造函数中的“body”有什么意义?

问题描述

这可能是一个超级菜鸟问题......如果是的话,请原谅我......我读到有人像这样构造一个 HtmlResponse 类:

response = HtmlResponse(url = 'http://asite.com', body=html, encoding='utf-8')

body=html 有什么作用?它是否指定了源 html?即使指定了 url,为什么还需要源 html?

标签: pythonscrapy

解决方案


要为您的问题提供上下文,您需要了解 Scrapy 不是用于提出直接请求的工具。Scrapy 是一个网络爬虫框架,它作为一个项目独立工作。

我假设您认为这response = HtmlResponse(url = 'http://asite.com', ...)可能是从该特定站点“下载”信息的一种方式,但事实并非如此。Scrapy 旨在以某种方式和此处指定的特定顺序工作。请求和响应并不意味着在 Scrapy 中独立使用,因为它有自己的调度程序,您可以在其中转储Request对象并取回Response对象。

这些Response对象并不意味着直接实例化(事实上我一生中从未实例化过一个对象Response),因为它们是由 Scrapy 调度程序创建的,是先前指定的Request.

Haing 说,你当然仍然可以在 Python 中Response像其他任何东西一样实例化 a class,事实上它很有用,但主要用于测试目的,但仅此而已,因为它只是 Scrapy 调度程序应该来自的“无用”表示.


推荐阅读