Html-Agility-Pack lädt die Seite nicht mit vollem Inhalt?

asp.net html-agility-pack html-parsing scrape web-scraping

Frage

Ich verwende Html Agility Pack, um Daten von der Website abzurufen (Verschrottung)

Mein Problem ist die Webseite, von der ich die Daten abhole, wird ein Teil des Inhalts nach ein paar Sekunden geladen.

SO, wenn ich versuche, die bestimmten Daten von bestimmten Div zu lesen, gibt es mir null.

aber in var page ich gerade nicht die division reviewBox ..becuase ist noch nicht geladen.

public void FetchAllLinks(String Url)
{
    Url = "http://www.tripadvisor.com/";
    HtmlDocument page = new HtmlWeb().Load(Url);

    var link_list= page.DocumentNode.SelectNodes("//div[@class='reviewBox']");

    foreach (var link in link_list)
    {
        htmlpage.InnerHtml = link.InnerHtml;
    }
}

Kann mir bitte jemand sagen, wie ich die Anfrage verzögern soll

HtmlDocument page = new HtmlWeb().Load(Url);

lädt die vollständigen Daten in der page varibale

Beliebte Antwort

Es geht nicht darum, die Anfrage zu verzögern. Dieser Knoten wird von Javascript mit dem DOM befüllt und das Html Agility Pack ist das falsche Werkzeug für diese Anforderung (es ist überhaupt keine Web-Engine, es lädt nur die Basis-Html).

Wenn ich auf Dinge stoße , die eine vollständige Web-Engine zum Parsen benötigen, verwende ich normalerweise WatiN . Es wurde entwickelt, um das Testen tatsächlicher Webseiten zu unterstützen, aber das bedeutet, dass es den programmatischen Zugriff auf Webseiten über eine bestimmte Browser-Engine ermöglicht und das vollständige Dokument lädt. Es kommt mit IE-oder Firefox-Treibern aus der Box und ich erinnere mich vage daran, dass Chrome nicht schwer zu verwenden war.



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