如何使用 wget 下载而不跟随带参数的链接

Tie*_*ter 7 linux unix wget

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

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info
Run Code Online (Sandbox Code Playgroud)

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

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/
Run Code Online (Sandbox Code Playgroud)

我确实得到了很多文件,因为它也遵循诸如 ...?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
Run Code Online (Sandbox Code Playgroud)

这适用于伯克利,但 boinc-wiki.info 仍然给我带来麻烦:/

缴费灵:

我得到了似乎最相关的页面:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info
Run Code Online (Sandbox Code Playgroud)

Ski*_*rou 7

wget --reject-regex '(.*)\?(.*)' http://example.com
Run Code Online (Sandbox Code Playgroud)

--reject-type posix默认)。wget根据其他评论,仅适用于最近的 (>=1.14) 版本。

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

wget --reject-regex 'expr1|expr2|…' http://example.com
Run Code Online (Sandbox Code Playgroud)

  • wget 中的正则表达式没有锚定在开头或结尾,所以在你的第一个例子中`wget --reject-regex '\?' http://example.com` 就足够了。 (2认同)

Jos*_*eld 0

\xe2\x80\x98-R rejlist --reject rejlist\xe2\x80\x99\n指定要接受或拒绝的文件名后缀或模式的逗号分隔列表(请参阅文件类型)。请注意,如果有任何通配符,\xe2\x80\x98*\xe2\x80\x99、\xe2\x80\x98?\xe2\x80\x99、\xe2\x80\x98[\xe2\x80\x99或 \xe2\x80\x98]\xe2\x80\x99,出现在 acclist 或 rejlist 的元素中,它将被视为模式,而不是后缀。

\n\n

模式可能就是您想要的。\n我不确定这些模式有多复杂,但您可以尝试仅接受某些文件或阻止:

\n\n
wget -r -k -np -nv -R jpg,jpeg,gif,png,tif,*\\? http://www.boinc-wiki.info/\n
Run Code Online (Sandbox Code Playgroud)\n\n

接受:

\n\n
wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:nvm 根据另一篇文章。

\n