【问题标题】:Wildcard for curl/wget to download xml feedscurl/wget 用于下载 xml 提要的通配符
【发布时间】:2019-09-06 19:57:58
【问题描述】:

我想下载几个名为 feed.xml、feed2.xml、feed3.xml 等的提要,并将它们附加到同一个文档中。

我的下面的脚本有效,因为它将检查另外 9 个页面(从 2 到 10)。但我想使用通配符而不是指定限制。

curl -lo ~/Desktop/feed.xml https://address/feed.xml && curl -s https://address/feed[2-10].xml >> ~/Desktop/feed.xml

以下两次使用通配符的尝试对我来说都失败了,我不确定可能出了什么问题。

使用 [2-*] 或 *

curl -lo ~/Desktop/feed.xml https://address/feed.xml && curl -s https://address/feed[2-*].xml >> ~/Desktop/feed.xml


curl -lo ~/Desktop/feed.xml https://address/feed.xml && curl -s https://address/feed*.xml >> ~/Desktop/feed.xml

curl -lo ~/Desktop/feed.xml https://address/feed.xml && curl -s https://address/feed?.xml >> ~/Desktop/feed.xml

来源:https://curl.haxx.se/libcurl/c/CURLOPT_WILDCARDMATCH.html

【问题讨论】:

    标签: curl wildcard wget


    【解决方案1】:

    如果您查看有关 curl 通配符匹配的链接,您会看到:

    此功能仅支持 FTP 下载。

    原因很简单:FTP 服务器(通常)是可列出的,因此访问ftp://address/ 将提供可用于解析ftp://address/feed*.xml 等通配符的文件列表

    HTTP(S) 本身并不提供列出某个地址的所有资源的方法,因此 curl 无法确定存在多少提要。

    如果服务器确实提供了一个提要目录(在其他一些 url 上),您可以先请求它,然后使用它来生成范围。否则,如果提要的数量相对固定,您最好像现在一样手动提供范围。

    【讨论】:

    • 您好 Ezphres,感谢您的回答,既然您指出了这一点,这完全有道理。不幸的是,它没有提供提要目录。我认为对我来说一个解决方案是对我想要附加的页面使用 --fail 标志,我可以将页面数设置为非常高。 curl -lo ~/Desktop/feed.xml https://address/feed.xml && curl --fail -s https://address/feed[2-999].xml >> ~/Desktop/feed.xml你知道我可以用其他方法吗?
    • 如果带有 --fail 的解决方案适合您,我可能会同意。出于运行时和网络卫生的考虑,我会尽量缩小范围而不会丢失结果。
    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2018-06-16
    • 2016-12-04
    • 1970-01-01
    相关资源
    最近更新 更多