具有xidel +垃圾收集功能的负正则表达式

时间:2019-06-14 07:11:53

标签: xidel

我当前使用此命令从网站提取网址:

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时,这些不会减少内存使用。

1 个答案:

答案 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]"