如何从 html 创建一个 scrapy TextResponse 对象?

How do I create a scrapy TextResponse object from html?

我正在使用 scrapy.FormRequest 向 API 发送 POST 请求,并收到返回的 TextResponse 对象。该对象的主体如下所示:

{
"Refiners": ...
"Results": ...
}

我只对响应的 Results 部分感兴趣,因为它包含我想解析的 HTML。

因此,我正在尝试创建一个新的 TextResponse 对象,该对象仅包含正文中的 Results 部分,以便我能够在其上使用 response.css 方法.

我尝试了以下方法,但它产生了一个空的响应正文。关于为什么以及如何解决这个问题有什么想法吗?

new_response = scrapy.http.TextResponse(response.json()["Results"])

您可以使用 HTMLResponse class 并且您需要在构造函数中提供 bodyencoding 参数。

from scrapy.http import HtmlResponse
new_response = HtmlResponse(url="some_url", body=response.json()["Results"], encoding="utf-8")

然后您可以使用 new_response.css(...) 到 select 个元素。