2017-03-15 3 views
-1

Ich habe versucht, diese Seite zu kratzen:XPATH funktioniert in Chrome, aber nicht in Scrapy

https://www.cimbbank.com.sg/en/personal/support/help-and-support/rates-and-charges.html

print response.xpath('//tr') 

Aber es ist seltsam, die XPath funktioniert nur auf Chrome Dev-Tools, aber nicht auf Scrapy. Ich überprüfte den geschabten HTML über response.body, und das HTML ist normal.

+0

Die XPATH funktioniert auch in FireFox. Vielleicht können Sie Ihren vollständigen Spider-Code so posten, dass potenzielle Fehler auftauchen. –

Antwort

3

Die Antwort gefunden. Es stellt sich heraus, dass der HTML-Code nicht korrekt ist und Scrapy selbst nicht reparieren kann. Daher benötigt er die Hilfe von Beautiful Soup. Ich mache es so:

from scrapy.selector import Selector 

from bs4 import BeautifulSoup 

fixed_html = str(BeautifulSoup(response.body, "lxml")) 

print Selector(text=fixed_html).xpath('//*') 
+1

Eine Alternative ist die Verwendung von [html5lib] (https://pypi.python.org/pypi/html5lib). –

+0

Ja, ich würde html5lib vertrauen, um es direkt vor beautifulsoup zu bekommen. – pguardiario

Verwandte Themen