首页 > 解决方案 > 我在 C# 中的网页抓取和 html 敏捷包有错误

问题描述

 private void button1_Click(object sender, EventArgs e)
    {
        var html = @"https://html-agility-pack.net/from-web";
        HtmlWeb web = new HtmlWeb();
        var htmldoc = web.Load(html);
        var nod = htmldoc.DocumentNode.SelectSingleNode("//head/title");
        textBox1.Text = "Node Name: " + nod.Name + "\n" + nod.OuterHtml;
    }

起初我想用 c# 和 html 敏捷包学习 webscraoing,但是当我运行我的第一个代码时,会出现这个消息:

{在 HtmlAgilityPack.dll 中发生了“System.Net.WebException”类型的未处理异常

附加信息:底层连接已关闭:发送时发生意外错误。}

标签: c#html-agility-pack

解决方案


底层连接已关闭:发送时发生意外错误

当客户端计算机由于连接已关闭或不可用而无法发送 HTTP 请求时,会出现此问题。

由于您尝试访问 HTTPS 页面,因此您可能必须在创建请求之前设置安全协议。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
var html = @"https://html-agility-pack.net/from-web";
HtmlWeb web = new HtmlWeb();

这将更喜欢 TLS 1.2,但仍允许 1.1 和 1.0(以防止失败,因为某些站点不提供 TLS 1.2)。


推荐阅读