2016-04-20 9 views
0

Vielen Dank für alle im Voraus. Ich habe ein Problem bei der Verwendung von Scrapy auf Python 2.7 festgestellt. Die Webseite, die ich zu crawlen versuchte, ist a discussion board for Chinese stock market. Als ich versuchte, die erste Nummer "42177" direkt unter dem Banner dieser Seite zu bekommen (die Nummer, die Sie auf dieser Webseite sehen, ist möglicherweise nicht die Nummer, die Sie hier sehen, weil sie die Anzahl der Male in diesem Artikel darstellt gelesen und in Echtzeit aktualisiert ...), bekomme ich immer einen leeren Inhalt. Ich bin mir bewusst, dass dies das Problem mit dynamischen Inhalten sein könnte, aber ich habe noch keine Ahnung, wie ich es richtig crawlen kann.Inhalt leer bei der Verwendung von scrapy

42177 is the number I tried to crawl

Der Code, den ich verwendet:

item["read"] = info.xpath("div[@id='zwmbti']/div[@id='zwmbtilr']/span[@class='tc1']/text()").extract() 

ich denke, die XPath richtig eingestellt ist, und ich habe den Rückgabewert dieser Antwort überprüft, und es hat mir gesagt, in der Tat, dass es nichts unter das ist Verzeichnis. Ergebnisse hier gezeigt: 'read': [u'<div id="zwmbtilr"></div>']

Wenn es etwas hat, sollte es etwas zwischen <div id="zwmbtilr"> und </div> geben.

Wirklich dankbar, wenn Sie irgendwelche Gedanken dazu teilen!

Antwort

1

Ich habe gerade Ihren Link in Firefox mit NoScript aktiviert. Da ist nichts in der <div @id='zwmbtilr'></div>. Wenn ich die Javascripts aktiviere, kann ich den gewünschten Inhalt sehen. Wie Sie bereits wissen, ist dies ein Problem mit dynamischen Inhalten.

Ihre erste Option ist versuchen, die Anfrage von Javascript generiert identifizieren. Wenn Sie das können, können Sie die gleiche Anfrage von scrapy senden. Wenn Sie es nicht tun können, ist die nächste Option in der Regel ein Paket mit Javascript/Browser-Emulation oder etwas ähnliches zu verwenden. Etwas wie ScrapyJS oder Scrapy + Selenium.

+0

Danke Djunzu! Können Sie eine kurze Anleitung zu Ihrer ersten vorgeschlagenen Option, Beschreibung oder Links geben? Ich werde es lieben, die Technik zu lernen, da dies nicht das erste Mal war, dass ich auf dieses Problem stieß, um ehrlich zu sein ... Danke! – fbabelle

+0

Ich hatte noch nie mit dynamischen Inhalten zu tun, daher habe ich keine Erfahrung damit. Aber ich würde anfangen, die Anfragen zu prüfen, die der Browser mit und ohne aktiviertem Javascript durchführt (in Firefox können Sie Firebug + NoScript verwenden; oder gleichwertig in einem anderen Browser). Überprüfen Sie auch die Java-Quelle selbst. Wenn es sich um einen einfachen Fall handelt, finden Sie, wie Sie die benötigte Anfrage neu erstellen. Vielleicht kann dies helfen: http://stackoverflow.com/questions/8550114/can-scrapy-be-ed-to-scrape-dynamic-content-from-websites-that-use-ajax – Djunzu