首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xidel +垃圾收集函数的负正则表达式

使用xidel +垃圾收集函数的负正则表达式
EN

Stack Overflow用户
提问于 2019-06-14 15:11:53
回答 1查看 156关注 0票数 0

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

代码语言:javascript
复制
xidel https://www.website.com --extract "//h1//extract(@href, '.*')[. != '']"

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

另外,xidel有一个叫做垃圾收集的函数,但我不清楚如何使用这些函数。我可能是

代码语言:javascript
复制
--extract garbage-collect()

代码语言:javascript
复制
--extract garbage-collect()[0]

代码语言:javascript
复制
x:extract garbage-collect()

代码语言:javascript
复制
x"extract garbage-collect()

但是当使用--follow从多个页面中提取URL时,这些方法并没有减少内存使用量。

EN

回答 1

Stack Overflow用户

发布于 2020-06-22 05:15:17

我刚注意到这个老问题。看起来OP的账号被暂停了,所以我希望下面的答案能对其他用户有所帮助。

让我们假设'test.htm‘:

代码语言:javascript
复制
<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-“和”--nodes 2-“之外的所有”类“文本:

代码语言:javascript
复制
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:garbage-collect

(0个参数)

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

那就是-e "garbage-collect()[0]"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56593193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档