Ich habe eine HTML-Zeichenfolge, die ich in scrapy HTML-Antwort-Objekt konvertieren möchte, so dass ich die Selektoren css
und xpath
verwenden kann, ähnlich wie scrapys response
. Wie kann ich es tun?scrapy: html-String in HtmlResponse-Objekt konvertieren
11
A
Antwort
11
Zunächst einmal, wenn es für das Debuggen oder zu Testzwecken ist, können Sie die Scrapy shell
verwenden:
$ 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'
Es gibt different objects available in the shell während der Sitzung, wie response
und request
.
Oder können Sie eine HtmlResponse
class instanziiert und die HTML-String in body
bieten:
>>> from scrapy.http import HtmlResponse
>>> response = HtmlResponse(url="my HTML string", body='<div id="test">Test text</div>')
>>> response.xpath('//div[@id="test"]/text()').extract()[0].strip()
u'Test text'
dank alecxe, ich bin mit Selen becuase einiger ajaxiness. Ich möchte driver.page_source in dasselbe Objekt wie respose konvertieren, damit ich einige Extraktoren (mit css und xpath selectors) wiederverwenden kann, anstatt auf lxml zurückgreifen zu müssen. Ich denke, deine zweite Option ist diejenige, die ich brauche. – yayu
@yayu, dann müssen Sie wahrscheinlich keine HTML-Antwort erstellen, sondern eher eine 'Selector', siehe http://StackOverflow.com/questions/18836286/scraping-with-scrapy-and-selenium und http: //stackoverflow.com/questions/17975471/selenium-with-scrapy-for-dynamic-page. Könnte helfen. Vielen Dank. – alecxe
danke. Ich werde es mir ansehen. – yayu