首页 > 解决方案 > AngleSharp点击无ui界面

问题描述

我正在尝试通过 C# 和(AngleSharp 或 HTML Agility Pack)从网页获取有关可用时间表的信息。问题是要查看不同日期有哪些可用的时间表,您必须按“div”(上一个,下一个)。所以要有一个月的时间表,我必须一页一页地浏览。我发现的问题是我无法点击 div。与 Chrome 控制台中的 javascript 相比,如果我能做到的话。我已经看到在 IHtmlElement 上使用 DoClick 有类似的响应,但它不起作用,我没有更改页面。浏览器在 Document 中保持相同的 html。

标签: c#html-agility-packanglesharp

解决方案


让我们先来看看 AngleSharp 可以做什么:

  • 任何类型的请求,包括。他们的操纵(根据要求,但也在响应之前)
  • 常规 cookie 管理(当然还有它们的操作)
  • 查询 DOM 并执行“简单”操作(例如,单击按钮、提交表单)
  • 运行简单的 JavaScript 文件

这里的微不足道的意思是:不需要 AngleSharp 提供的任何功能的脚本,例如渲染树信息、高级 CSSOM 访问,... - 或需要非 ES5 兼容解析器的脚本(例如,使用 ES6 或一些特殊的非-标准能力)。

我在您的问题描述中看到的问题是,为了“单击”页面上的 div,需要运行脚本。这个脚本现在可以属于“琐碎”的类别,但很可能不是。现在您有 2 个选项:

  • 试试看,也许它有效/很棒,否则......
  • 查看脚本在做什么(显然最终是一些 HTTP 请求......)并做同样的事情

后者当然可以在 C#/AngleSharp 中重新实现。因此,您可以创建一个 HTTP 请求,获取数据,然后直接在该数据集上执行某些操作(它可能是 JSON 并且已经是您想要的......)或者(如果它提供部分 HTML)重新解析它并集成它在真实页面上。


推荐阅读