Ho una stringa html che voglio convertire in scrapy HTML response object in modo da poter usare i selettori css
e xpath
, simile a response
di scrapy. Come posso farlo?scrapy: converti stringa html in oggetto HtmlResponse
11
A
risposta
11
Prima di tutto, se è per scopi di debug o di test, è possibile utilizzare il 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'
ci sono different objects available in the shell durante la sessione, come response
e request
.
In alternativa, è possibile creare un'istanza di un HtmlResponse
class e fornire la stringa HTML in 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'
Problemi correlati
- 1. Errore Scrapy: exception.AttributeError: L'oggetto 'HtmlResponse' non ha attributo 'urljoin'
- 2. Converti oggetto in stringa JSON
- 3. Converti stringa in oggetto dinamico
- 4. Converti oggetto SRE_Match in stringa
- 5. Converti stringa in oggetto JSON
- 6. Converti oggetto classe in stringa leggibile dall'uomo
- 7. Converti oggetto di stringa JSON in C#
- 8. Java - Converti stringa in oggetto URI valido
- 9. Converti in oggetto datetime
- 10. Converti SVGSVGElement in stringa
- 11. Converti qualsiasi oggetto in piuttosto HTML in java
- 12. Converti oggetto C# in oggetto Json
- 13. Converti stringa JSON in oggetto generico in JAVA (con GSON)
- 14. Converti PDF in HTML
- 15. Converti CSS in HTML
- 16. Converti HTML in markdown
- 17. Converti HTML in XAML
- 18. PowerShell: Converti XML in stringa
- 19. jQuery: Converti il contenuto TextArea in stringa html e viceversa
- 20. Converti tabella HTML in testo
- 21. Javascript/converti stringa di stile CSS in oggetto JS
- 22. Converti la stringa in oggetto jQuery e seleziona l'elemento interno
- 23. Converti oggetto stringa in classe di registrazione attiva
- 24. Regex - Converti HTML in tag XML valido
- 25. Converti byte ASCII [] in stringa
- 26. Converti JsDefined in stringa
- 27. Converti stringa in SocketAddr
- 28. Converti stringa in Uri
- 29. Converti stringa in CLLocationCoordinate2D
- 30. Converti System.Array in stringa []
grazie alecxe, sto usando Selenio becuase di qualche ajaxiness. Voglio convertire driver.page_source nello stesso oggetto di resposne in modo che possa riutilizzare alcuni estrattori (usando selettori css e xpath) invece di dover ricorrere a lxml. Penso che la tua seconda opzione sia quella di cui ho bisogno. – yayu
@yayu quindi, probabilmente non è necessario creare una risposta HTML, ma piuttosto un 'Selettore', vedere http://stackoverflow.com/questions/18836286/scraping-with-scrapy-and-selenium e http: //stackoverflow.com/questions/17975471/selenium-with-scrapy-for-dynamic-page. Potrebbe aiutare. Grazie. – alecxe
grazie. Lo esaminerò. – yayu