如何从 HTML 文档中提取术语

如何从 HTML 文档中提取术语

我有一个 HTML 文档,其中充满了需要放入电子表格中的术语。

它们遵循以下基本模式:

<ul>
     <li class="name"><a href="spot.html">Spot</a></li>
     <li class="type">Dog</li>
     <li class="color">Red</li>
</ul>
<ul>
     <li class="name"><a href="mittens.html">Mittens</a></li>
     <li class="type">Cat</li>
     <li class="color">Brown</li>
</ul>
<ul>
     <li class="name"><a href="squakers.html">Squakers</a></li>
     <li class="type">Little Parrot</li>
     <li class="color">Rainbow</li>
</ul>

它非常一致。

li.name a我需要提取(so, "Spot")中的字符串,但是仅有的如果type是“狗”或“鹦鹉”,然后将它们放入电子表格中。

我一直在尝试使用Sublime Text与Regex一起找到的能力,但是我真的很挣扎,而且由于Regex和HTML通常不要表现得很好,我想知道是否有更好更简单的方法来实现这一点。谢谢。

答案1

这是一个 JavaScript 实现,它实际上使用了 DOM,检查类,如果类包含适当的单词,type则写入类。如果需要更多 s,只需将它们添加到变量中,并用竖线 ( ) 将它们分开。nametypetypesearchfor|

var searchfor = /Dog|Parrot/gi;

var win = window.open();

var lists = document.body.getElementsByTagName("ul");

for (i in lists) {
    var points = lists[i].getElementsByTagName("li");

    for (j in points) {
        if ((" " + points[j].className + " ").indexOf(" " + "type" + " ") > -1) {
            if (points[j].innerHTML.match(searchfor) != null) {
                for (k in points) {
                    if ((" " + points[k].className + " ").indexOf(" " + "name" + " ") > -1) {
                        win.document.writeln(points[k].innerHTML + "<br />");

                        break;
                    }
                }
            }
        }
    }
}

在 jsFiddle 上测试:http://jsfiddle.net/wdR5Y/

最简单的使用方法是将其转换为书签,如下所示:http://userjs.up.seesaa.net/js/bookmarklet.html

与 JavaScript 一样,它独立于操作系统并受到大多数流行的网络浏览器的支持。

导入到电子表格取决于您的电子表格应用程序,但通常复制和粘贴就足够了(打开一个带有输出的新窗口)。


如果是 ID,而不是类,这会容易得多……好吧。归功于Stack Overflow 答案通过类名获取元素。

答案2

不要使用 Regex 来解析 XML 或 HTML,而要使用 XML 或 HTML 解析器。

另一种方法是将 XML 或 HTML 转换为文本,然后使用 grep

从文档中提取 XML 标签的应用程序
RedHat 上是否有可用的解析 xml 文件的本机工具?
脚本:提取 XML 文件标签中的值最容易的方法是什么?

相关内容