javascript - 在浏览器中使用 CSS 选择器从包含 HTML 标记的字符串中抓取数据,而不创建 DOM 元素?

标签 javascript css xml-parsing web-scraping html-parsing

我已经尝试这个简单的任务好几个小时了。似乎没有可用的库可以提供帮助,这里也没有任何问题似乎可以解决这种情况。

这很简单:

  • 我将整个页面的标记作为字符串。
  • 我需要使用 CSS 选择器指向元素我需要从中抓取数据。
  • 我不想创建实际的 HTML DOM 元素。只从他们那里抓取数据。 该页面可能包含我不想创建的图像、音频、视频和其他元素。
  • 它需要能够处理标记错误和 HTML5 样式的标记。目前,尝试将其解析为 XML 会引发“无效 XML”异常。
  • 它需要在浏览器中发生。所以,没有 NodeJS 模块。

在 JAVA 中,我已经能够使用 JSoup 完全做到这一点。但是似乎没有一个在浏览器上运行的 JS 的等效库。

感谢您的宝贵时间。

最佳答案

@JaromandaX 的建议是正确的。一种方法是使用 DOMParser 对象。它允许您创建元素,然后对它们使用 .querySelector.querySelectorAll,同时不加载任何外部资源或运行任何脚本

这对我有用:

var parser = new DOMParser();
var doc = parser.parseFromString(markup, "text/html");

关于javascript - 在浏览器中使用 CSS 选择器从包含 HTML 标记的字符串中抓取数据,而不创建 DOM 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654031/

相关文章:

java - 无法比较 xml 标记中的属性

javascript - 将 javascript 绑定(bind)到新行

javascript - 无法解码来自 Websocket 的消息

asp.net - 菜单中按钮的CSS位置

CSS 宽度大于没有水平滚动的页面宽度(溢出 :hidden not an option)

xml - Gradle Groovy如何在XML解析器中保留注释和所有格式

xml - XML 文件中是否必须将 ">"替换为 ">"?

javascript - $(这个)。方法(js 或 jquery)

javascript - 将列表的数组过滤到jquery中的子数组中

javascript - 确定放置在 div 中的文本量以最大化最后一行的宽度