Html Agility Pack 与 302 重定向到同一页面

Posted

技术标签:

【中文标题】Html Agility Pack 与 302 重定向到同一页面【英文标题】:Html Agility Pack vs. 302 redirects to same page 【发布时间】:2015-11-24 10:58:16 【问题描述】:

我正在尝试从位于 108.170.59.213 的旧 http://www.printprint.ca 站点获取元标记(我的主机文件中有此),但似乎无法在 DocumentNode 中获取任何内容。 旧网站似乎 302 重定向到同一页面,它破坏了 Xenu、ScreamingFrog、BeamUsUp 等所有爬虫。 在初始 302 到同一页面后,它以 200 响应,但我不知道如何让 htmlAgilityPack 接受这一点。 我试过添加这个:

web.PreRequest = OnPreRequest;

private static bool OnPreRequest(HttpWebRequest request)
    
        request.AllowAutoRedirect = true;
        return true;
    

【问题讨论】:

【参考方案1】:

我知道这个老了。但由于没有答案,我可能会输入我的解决方案。

public static void Main(string[] args)

    HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    try
    
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.printprint.ca ");
        request.Method = "GET";
        request.ContentType = "text/html;charset=utf-8";

        using (var response = (HttpWebResponse)request.GetResponse())
        

            using (var stream = response.GetResponseStream())
            
                doc.Load(stream, Encoding.GetEncoding("utf-8"));
            
        
    
    catch (WebException ex)
    
        Console.WriteLine(ex.Message);
    
    HtmlNodeCollection metas = doc.DocumentNode.SelectNodes(".//meta");
    foreach(HtmlNode meta in metas)
    
        Console.WriteLine(meta.OuterHtml);
        Console.WriteLine();
    
    Console.ReadKey();

【讨论】:

以上是关于Html Agility Pack 与 302 重定向到同一页面的主要内容,如果未能解决你的问题,请参考以下文章

Html Agility Pack:查找评论节点

HTML Agility Pack 条带标签不在白名单中

Html Agility Pack/C#:如何创建/替换标签?

使用 HTML Agility Pack 替换 HTML div InnerText 标签

如何使用 Html Agility Pack 使请求超时

如何使用 HTML Agility Pack 修复格式错误的 HTML?