htmlagilitypack et dynamique du contenu litigieux
Je veux créer un site web de scrapper application et je veux le faire avec contrôle webbrowser, htmlagilitypack et xpath.
maintenant j'ai réussi à créer xpath générateur(j'ai utilisé webbrowser dans ce but), qui fonctionne très bien, mais parfois je ne peux pas saisir de manière dynamique (via javascript ou ajax) le contenu généré. J'ai aussi trouvé que, lorsque l'on contrôle webbrowser(en fait le navigateur IE) génère quelques balises supplémentaires comme "tbody", tandis que de nouveau htmlagilitypack
`htmlWeb.Charge(webBrowser.DocumentStream); " ne pas le voir.
une autre note. J'ai découvert que le code suivant fait attrape la page web en cours source, mais je ne pouvais pas fourni avec le htmlagilitypack
`(mshtml.IHTMLDocument3)webBrowser.Document.DomDocument;`
Pouvez vous s'il vous plaît m'aider avec ça?
désolé les gars, j'ai trouvé la solution ici: var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)webBrowser.Document.DomDocument; StringReader sr = new StringReader(documentAsIHtmlDocument3.documentElement.outerHTML); htmlDoc.Charge(sr); et cela a fonctionné.
comment vous pouvez reterived la dynamique du contenu de la page ?est htmlagility pack est utilisé pour reterive le contenu dynamique.
OriginalL'auteur Chyngyz Sydykov | 2012-04-16
Vous devez vous connecter pour publier un commentaire.
Je viens de passer des heures à essayer d'obtenir HtmlAgilityPack rendre certains ajax du contenu dynamique à partir d'une page web et que j'allais partir un post inutiles à l'autre jusqu'à ce que j'ai trouvé celui-ci.
La réponse est cachée dans un commentaire sous le post initial et j'ai pensé que je devrais redresser.
C'est la méthode que j'ai utilisé au départ et n'a pas fonctionné:
WebRequest ne sera pas rendu ou d'exécuter les requêtes ajax qui rendent le contenu manquant.
C'est la solution qui a fonctionné:
L'idée est de charger à l'aide du Navigateur web qui est capable de rendre le contenu ajax et puis attendre que la page est entièrement restitué avant puis à l'aide de Microsoft.mshtml de la bibliothèque de l'analyser à nouveau le code HTML sur l'agilité pack.
C'était la seule façon que je pouvais avoir accès à la dynamique de données.
Espère que cela aide quelqu'un
Le document est-il pour passer à HTMLAgilityPAck maintenant dans " sr " et de cette juste besoin de la manipulation?
quelle heure est-webBrowser1?
Juste pour la référence, si vous êtes en cours d'exécution pas en WinForms (ou tout STA) le contexte, vous aurez pour démarrer le WebBrowser dans STA conteneur. Quelque chose comme ceci: var t = new Thread(MyThreadStartMethod); t.SetApartmentState(N'.STA); t.Start();
Je vais avoir le même problème je veux récupérer le contenu de la table qui est chargé dynamiquement avec JS le div qui est créé par JS son id est packageTabContainer mais je reçois null, j'ai essayé la solution, mais ne pas obtenir le contenu est ici le lien, je suis besoin d'extraire. ikea.com/qa/en/catalog/products/60368726
OriginalL'auteur Nick
Serait Le sélénium faire l'affaire. Pour autant que je suis conscient qu'il crée des instances de moteurs de navigateur.. sorte de et devrait permettre de js pour être exécutée et vous permettre d'obtenir le résultat de la manipulés DOM.
OriginalL'auteur Lee Englestone
Utiliser HTML Agility pack de document de la méthode suivante.
OU
OriginalL'auteur dev