Obtenir l'URL absolue de l'image à partir d'un nœud dans HtmlAgilityPack.HtmlDocument

c# html html-agility-pack redirect relative-url

Question

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).

Réponse populaire

Envisagez ResponseUri et pour éviter un deuxième appel, donnez à l'analyseur d'agilité HTML la chaîne contenant le contenu de la page.



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