HTML Agility Pack 设置

6
我正在使用Agility Pack解析HTML,参考了这个问题: What is the best way to parse html in C#?,我得到了很好的结果 :) 但是当我进入一些基于我的位置进行结果展示的网页时,就会出现问题。例如,如果我在西班牙,我会得到西班牙地区的结果,但我想更改为英格兰,应该怎么做呢?我的意思是需要在用户代理中进行更改吗?(我使用的用户代理是“Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:x.x.x)Gecko/20041107 Firefox/x.x)”)
2个回答

12
你可以使用WebClient.DownloadString方法,该方法允许你设置HTTP请求头以下载网页内容,然后将其提供给HTML Agility Pack。
用户代理不控制语言。它是Accept-Language标头。例如:
using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.AcceptLanguage] = "es-ES";
    client.Headers[HttpRequestHeader.UserAgent] = "some user agent if you wish";
    string html = client.DownloadString("http://example.com");
    // feed the HTML to HTML Agility Pack
    var doc = new HtmlDocument();
    doc.LoadHtml(html);

    // now do the parsing
}

但是,如果该网站使用基于IP的识别方式向您发送不同语言的内容,则客户端无法改变这种情况。


我也使用过WebClient,在HTML内容中我看到了--> lang="es",所以问题是如何将其更改为英语? - jobormo
太好了!这正是我想要的,不用担心该网站不使用IP识别 :) - jobormo

1
基于位置的搜索或页面通常通过IP完成,或者当您注册时,您告诉网站您的位置。您可能需要在想要看起来像您所在国家的匿名代理中进行研究。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接