2017-09-09 5 views
0

Ich bin mit einem technischen Problem konfrontiert, ich habe mehrere Artikel durchsucht, um die Antwort zu finden, aber ich konnte keine richtige Antwort von jeder Website bekommen.Crawling Webpage Daten mit ScrapySharp

Ich verwende ScrapySharp für mein Projekt zum Crawlen von Webseiten-Daten. Dieses Problem trat auf, wenn ich versuche, Daten von der http://edition.cnn.com/POLITICS-Website zu crawlen.

Zuerst habe ich die Seite über IE geladen, und ich wählte Entwickler-Tools, um die Tags zu überprüfen. Nach dem ich den Tag ausgewählt, die ich für meinen Code benötigen „// div [@ class =‚cd__content‘]“, Außerdem, wenn ich die oben genannten Web-Seite durch ScrapySharp laden

ScrapingBrowser browser = new ScrapingBrowser(); 
WebPage rootPage = browser.NavigateToPageAsync(new Uri(url)); 
HtmlNodeCollection rootNodes = rootPage.Html.SelectNodes("//div[@class='cd__content']"); 

Das Ergebnis für rootNodes zeigt als null

Wenn ich tief untersuche, was ich gesehen habe, ist der oben erwähnte cd__content ist in der "SECTION" -Tag, wenn die Seite lädt die "SECTION" -Tag ist leer. Aber wenn ich über IE oder Chrome überprüfe, sind alle Tags mit Informationen gefüllt, deshalb könnte ich das Element auswählen, aber wenn ich die Seite programmatisch lade, wird es das nicht tun. Meine Frage ist, wie kann ich die Seite mit dem Ausfüllen aller Informationen mit ScrapySharp laden.

Experten, bitte helfen Sie dabei.

+0

haben Sie check rootPage object, hast du dort tatsächlich HTML bekommen? Hat es alle HTML-Inhalte, die es haben soll? Wenn ja, könnte das Problem in Ihrem XPath sein. – Nick

Antwort

0

Wenn Sie den Netzwerkverkehr für die Seite analysieren, sehen Sie, dass das JavaScript eine Reihe von Aufrufen zum Laden von Inhalten aus http://edition.cnn.com/data/ocs/section/politics/index.html für jede "Inhaltszone" auf der Seite ausführt. Die Antwort auf diese Anforderungen enthält den HTML-Code und den Inhalt, der auf der Seite angezeigt wird.

Sie müssen, dass überprüfen und ähnliche Anfragen selbst zu machen, oder ob ein oder mehrere ihrer RSS feeds Ihre Bedürfnisse erfüllen und vorausgesetzt, Sie mit einem Parse-fähigen Set von Inhalten - zum Beispiel: http://rss.cnn.com/rss/cnn_allpolitics.rss