Scrapy: конвертировать html-строку в объект HtmlResponse

У меня есть необработанная строка html, которую я хочу преобразовать в объект для проверки объекта HTML, чтобы я мог использовать селектора css и xpath, похожие на scrapy response. Как я могу это сделать?

Ответ 1

Прежде всего, если это для отладки или тестирования, вы можете использовать Scrapy shell:

$ cat index.html
<div id="test">
    Test text
</div>

$ scrapy shell index.html
>>> response.xpath('//div[@id="test"]/text()').extract()[0].strip()
u'Test text'

Во время сеанса в оболочке доступны различные объекты, такие как response и request.


Или вы можете создать экземпляр класса HtmlResponse и предоставить строку HTML в body:

>>> from scrapy.http import HtmlResponse
>>> response = HtmlResponse(url="my HTML string", body='<div id="test">Test text</div>', encoding='utf-8')
>>> response.xpath('//div[@id="test"]/text()').extract()[0].strip()
u'Test text'