使用c#在asp中获取网页内容

时间:2018-02-02 14:53:42

标签: c# asp.net html-agility-pack

我想从网页填充我的MultiLine文本框,这是我的代码:

WebRequest request = WebRequest.Create(urltxt.Text.Trim());
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
    html = sr.ReadToEnd();
}

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");
valuetxt.Text = htmlBody.InnerText;

此代码适用于某些网址,但对于某些网址(https),这给了我一个错误:

  

无法找到文件'C:\ Program Files \ IIS Express \ www.justdial.com

或:

  

远程服务器返回错误:(403)禁止

任何人都可以帮助我吗?提前谢谢,抱歉我的英语不好。

3 个答案:

答案 0 :(得分:0)

您的地址似乎一开始没有 http:// https:// ;在urltxt变量中,由于相对寻址,您会收到错误。

答案 1 :(得分:0)

你是代理人吗?即使在开放的互联网上,根据您的网络配置,您可能需要在请求之前在连接中设置凭据。

WebRequest request = WebRequest.Create(urltxt.Text.Trim());
request.Credentials = new NetworkCredential("user", "password");

答案 2 :(得分:0)

在您的请求中添加UserAgent以正确连接 https

request.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";

来自here