Raclage HTML avec Pack d'agilité HTML

ajax c# html-agility-pack web-scraping

Question

Quelqu'un peut-il me dire le meilleur moyen d'obtenir le contenu à l'aide de HTMLAgilityPack que je mentionne ci-dessous à partir du code HTML.

Dans le code HTML fourni, je dois extraire la value de l'ID "img" et définir les valeurs pour x et y afin qu'elles soient utilisées dans une autre fonction.

Le HTML pertinent est

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Ces valeurs sont envoyées à la fonction dans le javascript affiché ci-dessous

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Un corps peut-il m'aider en me disant comment procéder?

J'ai écrit le code suivant qui me permet d'obtenir les données HTML de la page

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Maintenant que j'ai la racine, comment dois-je rechercher les paramètres, puis les envoyer par GET.

Réponse acceptée

Reprenant là où vous en étiez dans l'exemple de code ci-dessus, vous pouvez simplement saisir les valeurs comme celle-ci.

string imgValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"img\"]").GetAttributeValue("value", "0");
string xValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"x\"]").GetAttributeValue("value", "0");
string yValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"y\"]").GetAttributeValue("value", "0");

Où le premier exemple ci-dessus dit en gros trouver le premier noeud de type "input" qui a l'attribut "id" qui est égal à "img" et obtenez-moi la valeur de son attribut "value".

Ensuite, ajoutez simplement l'URL de destination et envoyez la requête Get comme vous l'avez fait pour obtenir le code HTML initial.


Réponse populaire

Je ne voudrais pas utiliser le Pack d'agilité HTML pour cela car je ne sais pas comment le faire revenir au site Web d'origine. Au lieu de cela, je voudrais utiliser WatiN . WatiN est conçu pour piloter un navigateur à des fins de test, mais je l’ai trouvé extrêmement utile lorsque je dois gratter des sites Web indépendants de ma volonté (tels que Facebook ou Wal-Mart). Le seul inconvénient est qu'il conduit une fenêtre de navigateur réel de sorte que ce n'est pas quelque chose que vous cachez d'un utilisateur. Upside est que vous pouvez facilement simuler des clics de souris et des entrées de texte de champ de formulaire.




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