如何从 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 并且您需要在构造函数中提供 body
和 encoding
参数。
from scrapy.http import HtmlResponse
new_response = HtmlResponse(url="some_url", body=response.json()["Results"], encoding="utf-8")
然后您可以使用 new_response.css(...)
到 select 个元素。
我正在使用 scrapy.FormRequest
向 API 发送 POST 请求,并收到返回的 TextResponse
对象。该对象的主体如下所示:
{
"Refiners": ...
"Results": ...
}
我只对响应的 Results
部分感兴趣,因为它包含我想解析的 HTML。
因此,我正在尝试创建一个新的 TextResponse
对象,该对象仅包含正文中的 Results
部分,以便我能够在其上使用 response.css
方法.
我尝试了以下方法,但它产生了一个空的响应正文。关于为什么以及如何解决这个问题有什么想法吗?
new_response = scrapy.http.TextResponse(response.json()["Results"])
您可以使用 HTMLResponse
class 并且您需要在构造函数中提供 body
和 encoding
参数。
from scrapy.http import HtmlResponse
new_response = HtmlResponse(url="some_url", body=response.json()["Results"], encoding="utf-8")
然后您可以使用 new_response.css(...)
到 select 个元素。