如何使用wget下载而无需遵循带有参数的链接


11

我正在尝试下载两个站点以包含在CD中:

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

我遇到的问题是这些都是Wiki。所以当用例如下载时:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

我确实得到了很多文件,因为它也跟随着诸如...?action = edit ...?action = diff&version = ...之类的链接

有人知道解决这个问题的方法吗?

我只想要当前页面,没有图像,没有差异等。

PS:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

这为伯克利工作,但boinc-wiki.info仍然给我带来麻烦:/

PPS:

我得到了与以下内容最相关的页面:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info

无需超级用户和serverfault之间交叉后serverfault.com/questions/156045/...
布莱恩

我应该在哪里发布它?
并列战士

就是这儿。这不是服务器问题。
David Z 2010年

我还是在serverfault上得到了更好的答案;)
Tie-fighter 2010年

Answers:


5

新版本的wget(v.1.14)解决了所有这些问题。

您必须使用new选项--reject-regex=....来处理查询字符串。

请注意,我找不到包含这些新选项的新手册,因此您必须使用help命令 wget --help > help.txt


4
wget --reject-regex '(.*)\?(.*)' http://example.com

--reject-type posix默认情况下)。wget根据其他评论,该功能仅适用于最新(> = 1.14)版本。

注意,似乎--reject-regex每个wget呼叫只能使用一次。也就是说,|如果要选择多个正则表达式,则必须使用单个正则表达式:

wget --reject-regex 'expr1|expr2|…' http://example.com

关于版本要求可能是正确的。我有v1.12,并且该选项无效。在升级到v1.15之后。
yunzen 2014年

|对于GNU Wget 1.16,使用(“ pipe”)符号进行的正则表达式替代对我不起作用。
sampablokuper 2015年

0
wget -R "*?action=*"

这将排除?action=名称中包含的任何内容。


3
“也请注意,查询字符串(以问号('?'开头的URL末尾的字符串)不包含在接受/拒绝规则的文件名中,即使它们实际上会影响所选择的名称本地文件。预计Wget的未来版本将提供允许与查询字符串匹配的选项。”
Tie-fighter 2010年

嗯,我一定错过了。看来您甚至无法使用wget做到这一点,甚至不知道它们是不同的文件。我建议使用其他程序。
大雪

-3

我想说,公开公共Wiki网站是不好的做法,因为它给网站增加了额外的负担。

如果Wiki是公开的并且站点所有者不介意共享内容,则通常会提供可下载的后端(数据库或其他内容)转储。因此,您只需要下载数据包,设置同一Wiki引擎的本地实例,将数据导入其中并获得本地副本即可。之后,如果您愿意,可以在本地进行处理。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.