c# - 使用 HtmlAgilityPack 解析网站不会返回在浏览器上看到的值
问题描述
解析站点https://holfuy.com/en/weather/1284时, HtmlAgilityPack 为相关数据返回“-”。
string url = "https://holfuy.com/en/weather/1284";
var web = new HtmlWeb();
web.PreRequest += request =>
{
request.CookieContainer = new System.Net.CookieContainer();
return true;
};
HtmlDocument doc = web.Load(url);
string data = doc.DocumentNode.SelectNodes("//*[@id=\"j_pressure\"]")[0].InnerText;
Console.WriteLine(data);
这背后的原因是什么?
解决方案
数据似乎是动态加载到页面中的,如果您需要解析它,您需要挂钩真正的浏览器,例如通过 Selenium 并使用其中一个可用的驱动程序,或者如果您不想包含整个 Selenium,只需挂钩一些无头浏览器直接喜欢phantom.js。完成后,只需为数据呈现、加载页面和解析设置一些小的延迟。
您可以在此处查看更多信息: 在 HtmlAgilityPack 中运行脚本
推荐阅读
- javascript - 更改为区分大小写时的 if 语句错误
- amazon-ses - 我们如何降低 aws ses 中的投诉率?我们如何从投诉 SES 通知中识别原始电子邮件
- wordpress - Wordpress 错误:尝试更改永久链接,但显示错误
- django - 如何复制查询集输出
- google-cloud-platform - “您的凭据可能对有权访问此虚拟机的其他人可见” - 这是什么意思?
- amazon-web-services - 如何处理 Amazon S3 REST API 的重定向?
- amazon-web-services - 带有詹金斯的代码管道是一个很好的解决方案吗?
- swiftui - 当显示工作表时,NavigationLink 变为活动状态
- javascript - 无法从路由模块呈现车把页面
- php - 有没有办法在 nginx 中将查询参数写为 cookie