0

我目前使用此命令从站点中提取 URL

xidel https://www.website.com --extract "//h1//extract(@href, '.*')[. != '']"

这将提取所有 URL (.*),但我想以一种不会提取在其 URI 路径中包含特定字符串的 URL 的方式进行更改。例如,我想提取所有 URL,除了那些包含-text1--text2-

此外,xidel 有一个名为garbage-collect 的函数,但我不清楚如何使用这些函数。我可以是

--extract garbage-collect()

或者

--extract garbage-collect()[0]

或者

x:extract garbage-collect()

或者

x"extract garbage-collect()

但是当使用--follow.

4

1 回答 1

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 有一个名为garbage-collect 的函数,但我不清楚如何使用这些函数。

http://www.benibela.de/documentation/internettools/xpath-functions.html#x-garbage-collect

x:garbage-collect ( 0 个参数)

释放未使用的内存。始终将其称为garbage-collect()[0],否则它可能会垃圾收集自己的返回值并崩溃。

所以那将是-e "garbage-collect()[0]"

于 2020-06-21T21:15:17.017 回答