Wie bekomme ich HTML, das über AJAX mit HTML Agility Pack generiert wird?

ajax asp.net c# html html-agility-pack

Frage

Ich versuche, Webseite zu analysieren. Teil dieser Seite generiert über AJAX, WebClient.DownloadString Ich kann ganzen HTML bekommen, außer dem Code, der über AJAX erzeugt wird? Kann mir bitte jemand helfen?

Mein Code ist:

var client = new WebClient();
client .Headers.Add(HttpRequestHeader.UserAgent, "UserAgent,Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1");
client.Headers.Add(HttpRequestHeader.Cookie, "USER_PW=xxxxxxxxx; PHPSESSID=xxxxxxxxxxxxxxxxxx");
var html = client.DownloadString("xxxxxxxxxx");

Ich brauche eine Liste von offenen Stellen ...

Akzeptierte Antwort

es ist möglich, den Inhalt zu erhalten, der über AJAX generiert wird. Aber es ist keine einfache Aufgabe , Sie erhalten nur die Seitenquelle (die gleiche, die Sie sehen können, wenn Sie mit der rechten Maustaste klicken und die Seitenquelle der Ansicht sagen)

Um den Ajax-Inhalt zu erhalten, müssen Sie die URL notieren, die der AJAX-Aufruf trifft, und dann einen weiteren Aufruf dieser URL machen, um den Inhalt zu erhalten. You can get this if you inspect the Network Tab of the developer window in any browser oder sich den JavaScript-Code You can get this if you inspect the Network Tab of the developer window in any browser ansehen.

Nachteile: Dies bedeutet auch, dass Sie nur die Antwort des AJAX-Aufrufs erhalten, aber was ist, wenn das Javascript diese Antwort manipuliert (wie das Erstellen einer Tabelle aus der JSON-Antwort). Dies müssen Sie möglicherweise manuell an Ihrem Ende tun.

Also bedeutet das auch, dass Sie am Ende die gleiche Logik wie im Javascript schreiben werden, um das Ergebnis HTML zu bekommen. Und das scheint eine Menge Schmerz und zu viele Löcher für Fehler zu sein.

Vorteil: Wenn Sie sich nur mit den Daten (wie Daten aus der Website-Datenbank) im HTML und nicht mit dem eigentlichen HTML selbst beschäftigen, dann wird dieser Ansatz für Sie funktionieren.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum