2014-12-05 4 views

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' 
+0

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

+1

@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

+0

danke. Ich werde es mir ansehen. – yayu