Wie bekomme ich JavaScript-Code auch mit der eigentlichen Quelle mit Html Agility Pack

c# html-agility-pack javascript parsing xpath

Frage

Ich bekomme Quelle einer Website mit Html Agility-Pack, die anders ist als der Code, wenn ich mit Firebug inspizieren.Ich habe viele Dinge gesucht, aber immer noch nicht klar, was ich tun sollte.Quelle ist anders als der Code, wenn ich inspect Bitte sagen mir, wie man JavaScript-Code auch mit diesem HTML bekommt. Selbst wenn ich Javascript in meinem Browser deaktiviere, kann ich den Javascript-Code immer noch nicht entlang der Quelle erhalten. ich benutze

string url="";
HtmlDocument doc = new HtmlDocument();
                WebClient client = new WebClient();
                html = client.DownloadString(url);
                doc.LoadHtml(html);

Um Quelle zu erhalten, sagen Sie mir, ob ich eine Anfrage und Antwort-Methode benötigen sollte, um JS-Code zu bekommen.

Akzeptierte Antwort

Um die @alecxe- Antwort zu erweitern, können Sie Selenium * verwenden, um Ihre Zielseite wie ein echter Browser zu laden, und dann das Ergebnis zur weiteren Verarbeitung an HtmlAgilityPack übergeben:

using OpenQA.Selenium;

.....

IWebDriver driver = new PhantomJS.PhantomJSDriver();
driver.Navigate().GoToUrl(url);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(driver.PageSource);

alternativ können Sie Ihre Abfrage (XPath- oder CSS-Selektor) auch direkt mit Selenium ausführen, zum Beispiel:

var result = driver.FindElements(By.XPath("your query"));

//print HTML of the returned elements
foreach (var item in result)
{
    Console.WriteLine(item.GetAttribute("outerHTML"));
}

*) Zuerst müssen Sie Selenium herunterladen, sowie den Treiber PhantomJS, Firefox usw. Selenium kann einfach von NuGet in Ihr Projekt installiert werden.


Beliebte Antwort

Dazu benötigen Sie einen echten Browser. PhantomJS Erwägung, einen Browser (der kopflos sein kann - siehe PhantomJS ) mit Hilfe von selenium automatisieren.

Siehe auch:



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