【问题标题】:Parsing HTML using JavaScript使用 JavaScript 解析 HTML
【发布时间】:2012-09-04 22:22:59
【问题描述】:

我正在处理一个页面,该页面需要从其他页面获取信息,然后在当前页面上显示部分信息/数据。

我有需要在字符串中解析的 HTML 源代码。我正在寻找一个可以帮助我轻松做到这一点的库。 (我只需要提取特定的标签和它们包含的文本) HTML 格式正确(所有结束/结束标记都存在)。

我查看了一些选项,但由于各种原因,它们都非常难以使用。

我尝试了以下解决方案:

  1. jkl-parsexml 库(库 js 文件本身抛出 HTTPError 101)
  2. jQuery.parseXML 实用程序(没有找到太多文档/许多示例来弄清楚该怎么做)
  3. XPATH(Execute 语句不起作用,但 JS 错误控制台显示没有错误)

因此,我正在寻找一个对用户更友好的图书馆或任何可以让我更好、更轻松、更高效地使用上述工具的东西(教程/书籍/参考资料/文档)。

理想的解决方案是 Python 中的 BeautifulSoup。

【问题讨论】:

  • 您可以将它添加到 DOM,隐藏它,然后使用纯 js 或 jQuery 访问您的元素。那其实就是让浏览器帮你解析,用js遍历DOM。
  • 我拥有的 HTML 是高度嵌套的(10-12 层深)并且缺少类、名称和 id 属性;即 getELementById 和类似的函数实际上是无用的。因此,以这种方式恢复所需的数据将是一件非常麻烦的事情。
  • 自定义解析器如何解决这个问题?
  • 嗯。看看 jquery 选择器。它应该足够强大。像“div p span”这样的东西会发现所有跨度都位于 div 内部而不是 p 内部。 "div>p>span" 会做同样的事情,但是现在 p 必须是 div 和 span 的直接子级 - 这种 p 的直接子级。 jquery 中还有很多其他有用的选择器/函数
  • @bfavaretto 我不能肯定地说自定义解析器会使工作更容易,但这是我尝试的第一种方法,而且非常耗时。我希望解析器能给我嵌套的字典,我可以更容易地循环。

标签: javascript jquery xpath xml-parsing html-parsing


【解决方案1】:

使用 jQuery,就像$(HTMLstring); 一样简单地创建一个带有来自其中字符串的 HTML 数据的 jQuery 对象(这个 DOM 将与您的文档断开连接)。从那里可以很容易地用它做任何你想做的事情——当然,遍历加载的数据是 jQuery 的小菜一碟。

【讨论】:

  • 我不确定这是我的代码还是 HTML 本身的问题,但是当我尝试这个时我得到“错误:无效的 XML”。这是我使用的代码` htmlDoc = $.parseXML(pagetext);$html = $( htmldoc );$html.find("body");`
  • @Ayos:我猜这是因为您试图将一些无效的 XML 传递给 .parseXMLpagetext的内容是什么?
  • 该页面包含 HTML,头部带有 CSS,
  • 直接试试var $html = $(pagetext)吧。
【解决方案2】:

你可以这样做:

$("string with html here").find("jquery selector")

$("string with html here") 这将创建一个文档片段并将一个 html 放入其中(基本上,它将解析您的 HTML)。 find 将搜索该文档片段中的元素(并且仅在其中)。同时不会放到页面DOM中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2017-03-02
    • 1970-01-01
    • 2014-02-02
    • 2016-02-18
    相关资源
    最近更新 更多