comment obtenir du code javascript aussi avec la source réelle avec Html Agility Pack

c# html-agility-pack javascript parsing xpath

Question

J'obtiens la source d'un site Web en utilisant le pack d'agilité HTML qui est différent du code lorsque j'inspecte avec firebug.J'ai recherché beaucoup de choses mais ne m'éclaircissant pas encore de ce que je devais faire. La source est différente du code lorsque j'inspecte moi aussi comment obtenir du code javascript avec ce code HTML. Même lorsque je désactive le javascript dans mon navigateur, je ne parviens toujours pas à obtenir le code Javascript le long de la source. j'utilise

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

pour obtenir la source, dites-moi si je devrais avoir besoin d'une méthode de requête et de réponse pour obtenir le code JS aussi.

Réponse acceptée

Pour développer la réponse @alecxe , vous pouvez utiliser Selenium * pour charger votre page cible comme le ferait un vrai navigateur, puis transmettre le résultat à HtmlAgilityPack pour traitement ultérieur:

using OpenQA.Selenium;

.....

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

alternativement, vous pouvez simplement exécuter votre requête (XPath ou le sélecteur CSS) en utilisant directement Selenium, par exemple:

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

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

*) Vous devez d'abord télécharger Selenium, ainsi que le pilote PhantomJS, Firefox, etc. Selenium peut être facilement installé sur votre projet à partir de NuGet .


Réponse populaire

Pour cela, vous aurez besoin d'un vrai navigateur. Envisagez d'automatiser un navigateur (qui peut être sans tête - voir PhantomJS ) à l'aide du selenium .

Voir également:



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow