我有一个 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,只需将它们添加到变量中,并用竖线 ( ) 将它们分开。name
type
type
searchfor
|
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 文件标签中的值最容易的方法是什么?