使用wget但忽略url参数

时间:2014-11-04 13:19:55

标签: linux wget

我想下载构建网址的网站的内容

http://www.example.com/level1/level2?option1=1&option2=2

在网址中,只有http://www.example.com/level1/level2对每个网页都是唯一的,而且option1和option2的值正在发生变化。实际上,由于这些变量,每个唯一页面都可以有数百种不同的符号。我正在使用wget来获取所有网站的内容。由于这个问题,我已经下载了超过3GB的数据。有没有办法告诉wget忽略URL问号背后的一切?我无法在手册页中找到它。

4 个答案:

答案 0 :(得分:14)

您可以使用wget --reject-regex "(.*)\?(.*)" -m -c --content-disposition http://example.com/ 指定拒绝特定URL地址的模式,例如

catch()

这将反映网站,但它会忽略带问号的地址 - 对于镜像维基站点非常有用。

答案 1 :(得分:1)

这对您而言无济于事,但对于那些已经下载了所有这些文件的人来说。您可以按以下步骤快速重命名文件以删除问号及其后的所有内容:

rename -v -n 's/[?].*//' *[?]*

上面的命令进行一次试运行,并向您显示如何重命名文件。如果试运行一切正常,请再次运行该命令而不使用-n(nono)开关。

答案 2 :(得分:0)

问题解决了。我注意到我想要下载的网址都是搜索引擎友好的,其中描述是使用短划线形成的:

http://www.example.com/main-topic/whatever-content-in-this-page

所有其他网址都引用了CMS。

我得到了所有的东西
wget -r http://www.example.com -A "*-*"

这就是诀窍。感谢您的分享!

答案 3 :(得分:0)

@kenorb使用--reject-regex的答案是好的。尽管在旧版wget上,它对我来说不起作用。这是与GNU Wget 1.12一起使用通配符的等效项:

wget --reject "*\?*" -m -c --content-disposition http://example.com/