Je souhaite récupérer une page Web sur Internet et obtenir des URL absolues de certaines images de la page à l'aide de HtmlAgilityPack en C #.
Le problème est...
Le site Web va d'abord rediriger l'URL vers une autre, puis l'attribut src
dans la <img>
est l' URL associée .
Actuellement, j'ai des codes comme celui-ci:
using HtmlAgilityPack;
HtmlDocument webpageDocument = new HtmlWeb().Load("http://xyz.example.com/");
HtmlNodeCollection nodes = webpageDocument.DocumentNode.SelectNodes("//img");
String url = nodes[0].Attributes["src"].Value.ToString();
Les codes ci-dessus récupèrent une page Web à partir de l'URL donnée, récupèrent un élément <img>
dans l'arborescence DOM et en obtiennent l'attribut src
.
Cela fonctionne si <img>
a une URL absolue. Mais malheureusement, le site Web que je veux gérer me donne un URI associé (par exemple, /img/01.png
). J'ai besoin de l'URL absolue pour pouvoir faire plus d'options sur l'image.
Donc, j'ai besoin de savoir quelle URL est l' URL de base pour src
donnée, mais a échoué. Ou, en d'autres termes, je ne sais pas comment obtenir l' emplacement de la page Web après la redirection .
Le côté serveur n'est pas le mien (je n'ai aucun contrôle sur lui).
Envisagez ResponseUri et pour éviter un deuxième appel, donnez à l'analyseur d'agilité HTML la chaîne contenant le contenu de la page.