Comment obtenir du contenu chargé dynamiquement à l'aide de HtmlAgilityPack

c# html-agility-pack

Question

J'essayais d'extraire du code HTML de notre banque centrale à l'aide de HtmlAgilityPack.

Voici un compte hebdomadaire. La deuxième partie de la déclaration "Un compte en vertu de la Bangladesh Bank Order Order 1972 ..." contient une ligne "A. Gold Coin and Bullion".

J'ai essayé avec le code suivant -

var get = new HtmlWeb();
for (int i = 1; i < 8284; i++)
{
    var dat = get.Load("https://www.bb.org.bd/pub/weekly/staffair/state_affairs.php?prId=" + i);
    var htm = dat.DocumentNode.InnerHtml;
    if (htm.Contains("Gold Coin and Bullion"))
    {
       File.WriteAllText(@"C:\Test\" + i + ".txt", htm);
       Console.WriteLine(i + " written");
    }
}

Si je fais un clic droit sur la page et cliquez sur "Voir la source", je ne vois pas la ligne "A. Gold Coin and Bullion". dat.DocumentNode.InnerHtml retourne la même chose, par conséquent, aucun fichier n'est écrit dans Test Folder. Mais je peux voir toutes les informations si je clique sur "Inspecter l'élément" au lieu de "Voir le source".

Comment obtenir cette ligne en utilisant HtmlAgilityPack?

Réponse acceptée

La raison pour laquelle vous ne pouvez pas le voir dans le code source est que les données que vous recherchez sont chargées via JavaScript dans votre navigateur après le téléchargement initial de la page. HtmlAgiligyPack est juste un analyseur HTML et ne supporte pas l'exécution de javascript et le chargement de ressources supplémentaires. Il existe d'autres moyens de procéder, mais vous devrez utiliser un autre outil. C'est probablement un bon endroit pour commencer:

Charger un DOM et exécuter javascript, côté serveur, avec .Net




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi