web-dev-qa-db-ja.com

スクレイピー:html文字列をHtmlResponseオブジェクトに変換します

スクラピーズのcssと同様に、セレクターxpathresponseを使用できるように、スクラピーズのHTML応答オブジェクトに変換する生のhtml文字列があります。どうすればいいですか?

21
yayu

まず、デバッグまたはテストの目的である場合は、 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'

responserequestのように、セッション中に シェルで使用可能なさまざまなオブジェクト があります。


または、 HtmlResponse class をインスタンス化し、bodyでHTML文字列を指定することもできます。

>>> 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'
33
alecxe

alecxe の答えは書き込みですが、これはSelectorからtextscrapy :でインスタンス化する正しい方法です。

>>> from scrapy.selector import Selector
>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').get()

'good'
2
Mohsen Mahmoodi