c# - 抓取 htmlagilitypack

标签 c# web-scraping html-agility-pack

我正在使用 HtmlAgilityPack 在 C# Asp.Net 中执行 Scraping,到目前为止,我在从多个 Web 执行 Scratch 时没有遇到问题,但是,尝试弹出以下代码时出现错误

Var getHtmlWeb = new HtmlWeb ();
Var home page = getHtmlWeb.Load ("https://www.corfo.cl/sites/cpp/home");

出现的错误是:

"Connection terminated: Unexpected sending error."

唯一给我带来问题的网站是 Corfo,而不是如何解决这个问题。 感谢您的帮助

最佳答案

本网站依赖于 cookie 来工作,例如它请求的 URL 之一是 https://www.corfo.cl/sites/Satellite;jsessionid=T8w78ZolfWgr3ZoEBBvE81nBiXbXIdjfF1In3bgpZiYvL_w8TF4p!1081543155!-596930586?c=Page&cid=1456408322328&pagename=CorfoPortalPublico/Page/corfoListadoOfertaInteligenteWebLayout

因此,当您请求 www.corfo.cl 时,它首先转发到 www.corfo.cl/sites/cpp/home,然后在/sites/文件夹中设置 cookie jsessionid=OHS_1~T8w78ZolfWgr3ZoEBBvE81nBiXbXIdjfF1In3bgpZiYvL_w8TF4p!1081543155!-596930586等等

使用此 cookie,此页面会使用与此 jsessionid 相关的所有/某些组件构建自身。

如果客户端代码不处理这些逻辑,如上面两行,服务器将按预期重置连接,因为服务器不知道如何在没有 jsessionid 的情况下构建此页面。

System.Net.WebException 的内部异常是 {“身份验证失败,因为远程方已关闭传输流。”}

希望这对您有所帮助!

关于c# - 抓取 htmlagilitypack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166980/

相关文章:

c# - 如何将datagridview中的单元格值保存到列表<list<>>

c# - 如何在没有 P/Invoke 的情况下从 C# 创建挂起的进程?

python - Scraper Python和YouTube API

r - 迭代 rvest 抓取函数给出 : "Error in open.connection(x, "rb") : Timeout was reached"

c# - 测试 HtmlAgility Pack 创建的 HTML 是否有效

c# - 将正则表达式转换为 htmlagilitypack

c# - Html Agility Pack - 如何选择正确的跨度类

c# - 如何从不应更改源字符串的大写/小写的源字符串中替换某些字符串

c# - ObjectListView 全选复选框

web-scraping - BeautifulSoup 查找类包含一些特定的单词