使用htmlagilitypack代理

时间:2012-08-23 20:32:45

标签: c# html-agility-pack

我搜索了这个问题,但没有找到我想要的东西,基本上我想使用htmlagilitypack的代理,我之前有代码执行但丢失了,这是我到目前为止的代码,这是有效的。但是我在我正在制作的程序上计时并且需要启用代理。

    private void button1_Click(object sender, EventArgs e)
    {
        StringBuilder output = new StringBuilder();
        string raw = "http://www.google.com";
        HtmlWeb webGet = new HtmlWeb();
        webGet.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6";
        var document = webGet.Load(raw);


    }

3 个答案:

答案 0 :(得分:6)

使用使用代理的HtmlWeb.Load()重载。有两个过载签名:

HtmlDocument Load(string url, string method, WebProxy proxy, NetworkCredential credentials);
HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password);

我没有在代码中使用代理的任何第一手经验,但我希望这可以工作。

答案 1 :(得分:4)

HtmlAgilityPack不会从网址下载数据。使用类下载支持代理的页面。

例如

WebClient wc = new WebClient();
wc.Proxy = new WebProxy(host,port);
var page = wc.DownloadString(url);

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);

修改

假设您从文本文件中读取11.22.33.44:5678之类的内容,也可以将代理创建为

wc.Proxy = new WebProxy("11.22.33.44:5678");

答案 2 :(得分:4)

在我们的公司设置中,将此添加到app.config对我而言无需任何代码更改

<system.net>
   <defaultProxy useDefaultCredentials="true" />
</system.net>