我当前使用此命令从网站提取网址:
xidel https://www.website.com --extract "//h1//extract(@href, '.*')[. != '']"
这将提取所有url(。*),但我想对此进行更改,使其不会提取在其路径中包含字符串的url。例如:除了包含-text1-和-text2-
的URL外,我想提取所有url。xidel还具有一个称为垃圾收集的功能,但我不清楚如何使用这些功能。我可能是
--extract garbage-collect()
或
--extract garbage-collect()[0]
或
x:extract garbage-collect()
或
x"extract garbage-collect()
但是当使用--follow从多个页面提取url时,这些不会减少内存使用。
答案 0 :(得分:0)
只是注意到了这个老问题。看来OP的帐户已被暂停,因此我希望以下回答对其他用户有所帮助。
我们假设'test.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]"
。