问题标签 [xidel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xidel - 我们可以使用 Xidel 将整个站点的数据提取到搜索文件中吗?
背景:我们正在汇总来自某些网站的内容(经许可),以用于其他应用程序的补充搜索功能。一个例子是https://centenary.bahai.us的新闻部分。我们考虑为此目的使用 xidel,因为模板文件范例似乎是从 html 中提取数据的一种优雅方式,例如对于模板:
...我们可以运行如下命令:
...这将为我们提供来自 centenary.bahai.us 上所有新闻页面的 json 格式数据。示例文章如下所示:
这很漂亮,而且比 httrack 和 pup 或(上帝保佑)sed 和 regex 的一些混搭要容易得多,但有一些问题:
- 我们希望每个文档都有单独的文件,而这给了我们一个大的 json 文件。
- 即使使用该
--silent
标志,我们仍然会在输出中获得使 json 无效的状态消息,例如**** Retrieving (GET): https://centenary.bahai.us ****
or**** Processing: https://centenary.bahai.us/ ****
或** Current variable state: **
- 这个过程似乎太脆弱了;如果模板和实际的 html 之间有任何差异,整个过程就会出错,我们什么也得不到。我们希望它只输出一个页面的错误,然后继续下一个 URL。
Xidel 似乎是一个改变游戏规则的工具,它应该可以通过一行命令和一个简单的提取模板文件来完成这项工作;我在这里想念什么?
html - 在 XPATH 中的 Javascript 中从对象中检索值
我需要从 HTML 文件中提取信息。对于它们中的大多数,我只需要匹配特定 DOM 元素的内容或属性,所以我使用 XPATH 表达式//a[@class="targeturl"]/@href
和命令行工具xidel。
在另一批文件中,我想要的信息在一个script
,不太容易获得:
请注意,包含我要获取的值的对象不是有效的 JSON。但是,它似乎每行尊重一个键值对。
我可以通过什么xidel --xpath "???"
来得到这个TARGET
?
match
我已经用 XPATH 函数尝试了不同的东西,但是如果没有管道到其他命令(告诉我是/否,replace
逐行工作......等),我无法找到解决方案。
templates - 从按钮标签中提取的 xidel 模板
我正在尝试使用此 xidel 模板提取单引号之间的内容,但我无处可去。
我是否必须转义一些字符。语法令人困惑。我在 Windows 的命令行上使用它,最新版本。
cmd - 在 cmd 上转义哪些字符以使用 Xidel 脚本
使用Xidel抓取 HTML:
在 CMD 输出中运行它时,会给出:
/(string)()'"`) 这个时候出乎意料。
我假设我需要转义一些字符,遵循此文档http://www.robvanderwoude.com/escapechars.php我尝试了很多选项,对各种字符使用胡萝卜,对 [] 使用反斜杠,但不断出现更多错误。
是否有某个角色需要转义或更多,或者根本不是这种情况?
arrays - xidel:将对象添加到 json 数组中
我想在网站上提取一些信息。为此,我使用 xidel。我使用这个命令行:
这里是我的模板文件:
在循环中,我创建了一个对象 $manga。如何将此对象添加到 $collection 数组?我努力了
但不工作。
regex - 使用正则表达式和 bash 在 xidel 中为 xpath 表达式创建别名
如果您已经使用过 Xidel,您通常需要定位具有特定类别的节点。为了更容易做到这一点,我想创建has-class("class")
一个函数作为表达式的别名:
contains(concat(" ", normalize-space(@class), " "), " class ")
。
例子:
e-xidel.sh 包含以下代码:
xquery - 使用 Xidel 提取同一行的 href 和 text,仅限特定链接
我正在尝试为<a>
html 页面中的多个链接提取标签内的链接(href)和文本。
我只想要特定的链接,我通过子字符串匹配。
我的html示例:
我正在使用 Xidel,它可以让我避免使用正则表达式。这似乎是最简单的工作。
到目前为止我所拥有的:
它基本上可以工作,但仍然存在两个问题:
- 我得到由换行符分隔的数据。我想把它放在同一条线上。
- 每个链接文本都被返回,所以我也得到文本“不重要的链接”。
获得输出的推荐方法是什么
感谢任何反馈/提示。
编辑:
Martin 提供的解决方案是 99%。没有输出换行符,所以我使用 awk 用换行符替换虚拟文本。
注意:我在窗户上。
bash - 如何使用 Xidel 从图像 @srcset 属性中获得图像的最佳分辨率?
我有这段代码来列出来自@srcset 属性的图像大小:
如何使用 Xidel 获得最佳分辨率?在这种情况下,只有800w
? 最大的尺寸可以在开头、结尾或中间(随机顺序)。
Xidel 预期输出:
或输出完整的 URL:
xidel - 带有 xidel + 垃圾收集功能的负正则表达式
我目前使用此命令从站点中提取 URL
这将提取所有 URL (.*),但我想以一种不会提取在其 URI 路径中包含特定字符串的 URL 的方式进行更改。例如,我想提取所有 URL,除了那些包含-text1-
和-text2-
此外,xidel 有一个名为garbage-collect 的函数,但我不清楚如何使用这些函数。我可以是
或者
或者
或者
但是当使用--follow
.