问题标签 [anglesharp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2824 浏览

c# - 如何在 AngleSharp 中仅加载特定元素?

我现在正在使用AngleSharp解析 HTML5 我正在做的是用一点 HTML 包装我想要解析的元素,使其成为有效的 HTML5,然后在上面使用解析器,有没有更好的做法它?意思是,直接解析特定元素并验证结构确实是 HTML5?

0 投票
2 回答
10330 浏览

javascript - 使用 AngleSharp 在 C# 中解析 JavaScript 网页

该网页使用 javascript 来构建其 html,因此我需要具有 js 支持的 html 解析器。
我找到了anglesharp,但我无法让它工作。

0 投票
1 回答
1711 浏览

c# - 使用 AngleSharp 加载资源文件

我将 AngleSharp 和 AngleSharp.Scripting.Javascript 的 nuget 包导入到一个空项目中,以查看在应用 javascript/css 后是否可以从网页中解析 html(如无头浏览器)。

我正在使用http://pycoders.com/archive/(它导航到使用浏览器中的 javascript 填充的时事通讯存档)作为测试 url。

显示内联 javascript 功能的基本示例脚本对我有用,并且在加载 html 后处理 javascript 等......但加载实际网页并var document = await browseingContext.OpenAsync(new Url("http://pycoders.com/archive/"), CancellationToken.None);没有处理从外部文件资源加载的脚本/css。

尝试调试该问题导致我将 IResourceLoader 接口实现为我自己项目中 AngleSharp 中包含的默认 ResourceLoader 的副本,并且似乎为网站返回了网站图标资源响应流,但第一个样式资源文件(https:/ /s3.amazonaws.com/pycoders2/css/bootstrap.css)没有被 WebRequest 加载到 ResponseStream 中。

对于上面的 css 资源文件,运行代码到达该行_http.BeginGetResponse(ReceiveResponse, null);,但从RecieveResponse不调用该方法。

我希望有人可以帮助我在 AngleSharp 中加载资源,因为它看起来像是一个下降的 html 解析器,并且 javascript/css 预处理会很好地完成它,从而消除我对 phantomjs 和 Selenium 的需求。

编辑:

渲染 html 时当前正在运行的资源任务的更多详细信息如下:

https://s3.amazonaws.com/pycoders2/img/favicon.ico - RanToCompletion

https://s3.amazonaws.com/pycoders2/img/favicon.ico - RanToCompletion

https://s3.amazonaws.com/pycoders2/css/bootstrap.css - WaitingForActivation

https://s3.amazonaws.com/pycoders2/css/main.css - WaitingForActivation

http://fonts.googleapis.com/css?family=Lato:300,400,900 - RanToCompletion

https://s3.amazonaws.com/pycoders2/img/header.png - WaitingForActivation

http://us4.campaign-archive1.com/generate-js/?u=9735795484d2e4c204da82a29&fid=1817&show=200 - RanToCompletion

https://code.jquery.com/jquery-1.10.2.min.js - RanToCompletion

https://s3.amazonaws.com/pycoders2/js/bootstrap.min.js - WaitingForActivation

0 投票
2 回答
1444 浏览

c# - 如何递归迭代在遍历过程中发生变化的树?

我正在尝试遍历 DOM 树,使用AngleSharpHTML 解析器替换和删除节点。这个问题不是这个库独有的,而是一个关于如何递归更改树并确保我仍在遍历整个树的一般问题。

以这个列表为例myCollection,其中每个条目都是一个节点对象,可能带有子对象。这也是一个现场合集:

我开始循环递归函数:

假设我们决定C用它的子节点替换节点,所以列表变为:

这样做的问题是递归将是错误的。现在有比Lengthfor 循环中的节点更多的节点,因此并非所有项目都会被递归。同样,删除一个节点意味着在列表中向上移动的节点将被跳过。

如何递归由于我的递归处理而可能发生变化的树?是否一遍又一遍地重复我的列表,直到我确定唯一的方法没有进行任何更改,或者我是否错误地解决了问题?

0 投票
1 回答
9745 浏览

c# - 如何使用 AngleSharp 和 LINQ 从网站中提取数据?

我正在尝试从下面提到的网站中提取价格。我正在使用AngleSharp进行提取。在网站上,价格如下(例如):

我正在使用以下代码进行提取。

但是,我没有收到任何物品,但它们在网站上。我究竟做错了什么?如果AngleSharp不是推荐的方法,我应该使用什么?我应该使用什么代码?

0 投票
1 回答
100 浏览

c# - 获取匹配查询的唯一链接列表

我正在使用 Anglesharp 解析网页,然后发现可能是联系页面的链接。

这是我的代码:

它有效,但我在联系人中得到重复的 PathName 值。我只想为每个值取一个值,PathName但选择/区别不起作用。

我必须创建自己的自定义比较器还是有办法改变我的 linq 查询?我不需要任何其他数据,只需要主机和路径名。

0 投票
1 回答
2193 浏览

anglesharp - 如何将 HTML 插入 AngleSharp 中的文本节点?

我正在使用 AngleSharp 解析文档。我有一个文本节点(NodeName:“#text”),我想在其中插入一些 HTML。我当然可以将 NodeValue 重置为我想要的任何值,但它仍然是一个文本节点,所以所有的括号都被转义了。

如何获取文本节点的字符串值,将一些 HTML 注入其中,然后解析 DOM 表示该 HTML 代替原始文本节点?

0 投票
1 回答
1016 浏览

c# - AngleSharp 返回跨度 ID

我试图通过返回 html 的特定部分来掌握 AngleSharp。

到目前为止,这是我的代码:

我希望它返回的是当前的艺术家,它应该在下面的 html 中:

但我似乎犯了一个错误......所以如果有人可以在这里帮助我并向我解释它,我会很高兴......

提前感谢大家的回答。:)

0 投票
1 回答
205 浏览

c# - 如何将多个 CSS 声明组合成简写

我正在使用AngleSharp解析一些 CSS 文件,比较它们的结构并从中构建一个输出文件。该工具使所有声明明确,即如果源规则是:

我从 AngleSharp 得到以下输出:

这对于比较规则和检测变化很有好处,但问题是,如何将这条规则组合成上面的简写形式?

所以再举一个例子,如何从中得到:

对此

CSS3 声明的情况变得更糟,因为它们真的可以有很多参数...我检查了一些 CSS 缩小器/丑化器工具,但它们主要使用 RegEx 来删除空白和较小的优化。是否有已知的方法/工具/库可以从多个声明中编写最佳速记?

0 投票
1 回答
2214 浏览

c# - 如何以编程方式构建 AngleSharp CSS(或 HTML)DOM

我发现的所有AngleSharp示例和测试都是从解析 CSS 或 HTML 片段并访问 DOM 读取开始的。如何以编程方式构建 CSS(或 HTML5)文档并将结果输出作为字符串?

我想要这样的东西(伪代码):