HtmlAgilityPack - 리디렉션 된 페이지를 이해하고 리디렉션 된 페이지로드하는 방법

c# html-agility-pack redirect

문제

HtmlAgilityPack 및 C # 4.0을 사용하면 페이지가 리디렉션되는지 여부를 어떻게 결정할 수 있습니다. 페이지를로드 할 때이 메서드를 사용하고 있습니다.

HtmlDocument hdMyDoc = hwWeb.Load(srPageUrl);

그리고 가정 리디렉션 결과 예

반환 된 내부 html

HtmlDocument hdMyDoc = hwWeb.Load(srPageUrl);

C # 4.0

수락 된 답변

이 경우 HTML을 구문 분석하는 것이 가장 좋습니다.

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");
}

인기 답변

문서가 비교적 잘 형성되었다고 가정하면 다음과 같이 할 수 있다고 가정합니다.

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();
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.