curl/wget 通配符下载 xml 个供稿

Wildcard for curl/wget to download xml feeds

我想下载几个名为 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

如果您查看 link 关于 curl 的通配符匹配,您会看到:

This feature is only supported for FTP download.

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

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

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