HtmlAgilityPack - Come capire la pagina reindirizzata e caricare la pagina reindirizzata

c# html-agility-pack redirect

Domanda

Con l'utilizzo di HtmlAgilityPack e c # 4.0 come è possibile determinare se la pagina viene reindirizzata o meno. Sto usando questo metodo per caricare la pagina.

HtmlDocument hdMyDoc = hwWeb.Load(srPageUrl);

E ad esempio il risultato del reindirizzamento, suppongo

Html interno restituito

HtmlDocument hdMyDoc = hwWeb.Load(srPageUrl);

c # 4.0

Risposta accettata

In questo caso , analizzare l'HTML è il modo migliore.

var page = "...";
var doc = new HtmlDocument();
doc.Load(page);
var root = doc.DocumentNode;
var select = root.SelectNodes("//meta[contains(@content, 'URL')]");
try
{
    Console.WriteLine("has redirect..");
    Console.WriteLine(select[0].Attributes["content"].Value.Split('=')[1]);
}
catch
{
    Console.WriteLine("have not redirect using HTML");
}

Risposta popolare

Supponendo che il documento sia relativamente ben formato, suppongo che potresti fare qualcosa del genere:

static string GetMetaRefreshUrl(string sourceUrl)
{
    var web = new HtmlWeb();
    var doc = web.Load(sourceUrl);
    var xpath = "//meta[@http-equiv='refresh' and contains(@content, 'URL')]";
    var refresh = doc.DocumentNode.SelectSingleNode(xpath);
    if (refresh == null)
        return null;
    var content = refresh.Attributes["content"].Value;
    return Regex.Match(content, @"\s*URL\s*=\s*([^ ;]+)").Groups[1].Value.Trim();
}



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché