问题标签 [html5ever]

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 投票
3 回答
4104 浏览

rust - 使用 hyper 和 html5ever 在流中解析 HTML 页面内容

我正在尝试解析 HTTP 请求的 HTML 响应。我使用hyper进行请求,使用html5ever进行解析。HTML 将非常大,我不需要完全解析它——我只需要从标签中识别一些数据,所以我更喜欢流式传输它。从概念上讲,我想做类似的事情:

到目前为止,我想出的是:

这似乎read_to_end是我想调用响应以读取字节的方法,但我不清楚如何将其通过管道传输到 HTML 文档阅读器......如果这甚至可能的话。

文档parse_document说要使用from_utf8或者from_bytes输入是否以字节为单位(它是)。

似乎我需要从响应中创建一个接收器,但这就是我卡住的地方。我也不清楚如何创建事件来监听我感兴趣的标签开始。

我已经查看了 html5ever 的这个示例,它似乎可以执行我想要的操作并遍历 DOM,但是我无法让这个示例本身运行——要么它已经过时,要么卷须/html5ever 太新。这似乎也将 HTML 解析为一个整体而不是一个流,但我不确定。

是否可以对这些库的当前实现做我想做的事情?

0 投票
1 回答
3366 浏览

rust - 如何使用 html5ever 解析页面、修改 DOM 并对其进行序列化?

我想解析一个网页,在某些位置插入锚点并再次渲染修改后的 DOM,以便为Dash生成文档集。这可能吗?

从 html5ever 中包含的示例中,我可以看到如何读取 HTML 文件并进行穷人的 HTML 输出,但我不明白如何修改RcDom检索到的对象。

我希望看到将锚元素 ( <a name="foo"></a>) 插入到RcDom.

注意:这是一个关于 Rust 和 html5ever 的问题……我知道如何用其他语言或更简单的 HTML 解析器来做。

0 投票
0 回答
195 浏览

rust - 如何获取一个 HTML 标记作为 2 个字符串(开始标记、结束标记),而没有来自 kuchiki 的内容?

我正在用 Rust 编写 HTML 到 Markdown 转换器,使用 Kuchiki 从 html5ever 访问解析树。

对于未知的 HTML 标记,我想提供忽略它们并将它们传递给输出字符串的可能性,但仍然照常处理它们的子级。为此,我需要没有内容的标签的文本表示,但我不知道如何最好地做到这一点。

我能想到的最好的是:

  1. 克隆节点
  2. 丢弃它的孩子
  3. 称呼node.to_string
  4. 使用正则表达式“解析”字符串以分隔开始标签和结束标签。

我觉得一定有更好的方法。我不认为 Kuchiki 提供了开箱即用的功能,但我也不知道如何通过 Kuchiki 访问 html5ever API,而且我也没有从 html5ever API 文档中获得它们是否会提供一些功能像这样。

0 投票
2 回答
322 浏览

rust - 如何转换卷须到 &str 或字符串?

我正在使用 HTML5ever,并且正在尝试将属性放入 a 中Vec<(String, String>)(尽管(&str, &str)也可以)。

不幸的是,html5ever 的属性值在Tendril<UTF8>s中,而不是Strings(或QualNames、&strs 等)。如何将其中一个Tendrils转换为 s String

0 投票
1 回答
545 浏览

web-scraping - 如何使用 html5ever 解析页面并找到所有链接?

我想用 html5ever 解析字符串格式的 HTML 并找到这个 HTML 中的所有链接。我知道如何使用 html5ever 解析页面、修改 DOM 并对其进行序列化?, 但是RcDom已经不存在了。

0 投票
1 回答
126 浏览

html - 如何使用 Kuchiki 获取 HTML 文档的所有文本(script/style/noscript 标签除外)?

我正在尝试获取 HTML 页面上的所有文本,不可见文本除外(例如:我不希望在 script/style/noscript 标记中使用文本)。

到目前为止,这是我想出的:

这个想法是第一遍将删除任何script, style, 或noscript标签。然后我可以打电话text_contents来获取可见的文本。

但是,似乎text_contents仍在返回内联 Javascript。

我是否误解了 Kuchiki/html5ever API?