我目前使用此命令从站点中提取URL
xidel https://www.website.com --extract "//h1//extract(@href, '.*')[. != '']"
这将提取所有 URL (.*(,但我想以一种不会提取在其 URI 路径中包含特定字符串的 URL 的方式更改它。例如,我想提取所有URL,除了包含-text1-
和-text2-
的URL
此外,xidel 有一个叫做垃圾收集的功能,但我不清楚如何使用这些功能。我可能是
--extract garbage-collect()
或
--extract garbage-collect()[0]
或
x:extract garbage-collect()
或
x"extract garbage-collect()
但是在使用--follow
从多个页面中提取URL时,这些并没有减少内存使用量。
刚刚注意到这个老问题。看起来OP的帐户已被暂停,因此我希望以下答案对其他用户有所帮助。
让我们假设"测试.htm">:
<html>
<body>
<span class="a-text1-u">1</span>
<span class="b-text2-v">2</span>
<span class="c-text3-w">3</span>
<span class="d-text4-x">4</span>
<span class="e-text5-y">5</span>
<span class="f-text6-z">6</span>
</body>
</html>
要提取所有"类"节点,除了包含"-text1-"和"-text2-"的节点:
xidel -s test.htm -e "//span[not(contains(@class,'-text1-') or contains(@class,'-text2-'))]/@class"
#or
xidel -s test.htm -e "//@class[not(contains(.,'-text1-') or contains(.,'-text2-'))]"
c-text3-w
d-text4-x
e-text5-y
f-text6-z
Xidel 有一个名为垃圾收集的功能,但我不清楚如何使用这些功能。
http://www.benibela.de/documentation/internettools/xpath-functions.html#x-garbage-collect:
x:垃圾收集 (0 参数(
释放未使用的内存。始终将其称为
garbage-collect()[0]
,否则它可能会垃圾回收自己的返回值和崩溃。
所以那将是-e "garbage-collect()[0]"
.