2014-12-05 8 views

Odpowiedz

11

Przede wszystkim, jeśli jest to w celach testowych lub debugowania, można użyć 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' 

Istnieje different objects available in the shell trakcie sesji, jak response i request.


Lub można utworzyć wystąpienia HtmlResponse class i zapewnić ciąg HTML body:

>>> 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

dzięki alecxe używam selen ponieważ posiadał jakiejś ajaxiness. Chcę przekonwertować driver.page_source na ten sam obiekt, co rerosne, dzięki czemu mogę ponownie użyć niektórych ekstraktorów (używając selektorów css i xpath) zamiast korzystać z lxml. Myślę, że twoja druga opcja jest tą, której potrzebuję. – yayu

+1

@ yayu wtedy prawdopodobnie nie musisz tworzyć odpowiedzi HTML, ale raczej 'Selectora', zobacz http://stackoverflow.com/questions/18836286/scraping-with-scrapy-and-selenium i http: //stackoverflow.com/questions/17975471/selenium-with-scrapy-for-dynamic-page. Może pomóc. Dzięki. – alecxe

+0

dzięki. Przyjrzę się temu. – yayu