这是我的问题。
我目前正在为我编写一个脚本,该脚本可以自动下载一些我用来“清理”计算机的软件。
我已经能够使用如下下载 URL 进行下载:“https://www.driverscloud.com/plugins/DriversCloud_Win.exe https://www.driverscloud.com/plugins/DriversCloud_Win.exe“但不适用于在短暂等待后重定向到下载 URL 的 URL,如下所示:”https://www.ccleaner.com/fr-fr/ccleaner/download/standard https://www.ccleaner.com/fr-fr/ccleaner/download/standard".
我可以看到问题是我没有给 Wget 直接下载地址,但我希望能够使用该地址来做到这一点“https://www.ccleaner.com/fr-fr/ccleaner/download/standard https://www.ccleaner.com/fr-fr/ccleaner/download/standard”因为Piriform(Ccleaner的开发者)更新软件相当定期,并且下载地址根据版本号而变化(例如:https://download.ccleaner.com/ccsetup547.exe https://download.ccleaner.com/ccsetup547.exe -> https://download.ccleaner.com/ccsetup548.exe https://download.ccleaner.com/ccsetup548.exe).
那么我怎样才能要求 Wget 获取页面中包含的下载链接而不下载页面本身(因为我得到一个名为“标准”的文件,如 URL 末尾的“https://www.ccleaner.com/fr-fr/ccleaner/download/standard https://www.ccleaner.com/fr-fr/ccleaner/download/standard" ?
如果您能为我提供 Wget 或其他工具(例如 Curl)的解决方案,我将非常高兴:)。
先感谢您。
您不需要 PHP。wget
独自一人就足以完成这项简单的工作:)
这是您需要的命令(我将在下面进行细分):
$ wget -r -l 1 --span-hosts --accept-regex='.*download.ccleaner.com/.*.exe' -erobots=off -nH https://www.ccleaner.com/fr-fr/ccleaner/download/standard
现在,详细说明其作用:
-
-r
:启用递归,因为我们想要跟踪提供的页面上的链接
-
-l 1
:我们只想递归一层深度,因为所需的 URL 位于同一页面上
-
--span-hosts
:所需的文件与我们提供的原始 URL 位于不同的主机上。所以我们要求wget在使用递归时跨主机
-
--accept-regex=...
:这指定将通过递归访问的链接的正则表达式。由于我们只需要一个文件并知道模式,因此我们制作了非常具体的正则表达式。
-
-erobots=off
: The download.ccleaner.com
主机有一个robots.txt
禁止所有用户代理。但我们不会抓取域,因此禁用机器人文件
-
-nH
:不要创建主机特定目录。这意味着 exe 现在将直接下载到您当前的文件夹中。
如果您想要更多自动化,您还可以附加&& rm -r fr-fr/
使用上述命令删除您下载的基本页面以获得正确的链接。
Enjoy!
编辑:由于 OP 在 Windows 上,因此这里有一个专门用于在 Windows 上运行的更新命令。它不会单引号正则表达式字符串,因为这会导致 Windows shell 将正则表达式作为带有单引号的字符串传递。
$ wget -r -l 1 --span-hosts --accept-regex=.*download.ccleaner.com/.*.exe -erobots=off -nH https://www.ccleaner.com/fr-fr/ccleaner/download/standard
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)