Wget 无法从网页下载所有链接

Wget 无法从网页下载所有链接

我想下载这个网站上的所有pdf文件:

http://www.math.utsc.utoronto.ca/b41/

我运行的命令是:

wget -r -A "*.pdf" "http://www.math.utsc.utoronto.ca/b41/"

但是,如果您访问该网站,有一个“作业”选项卡,其中包含作业 1-10,但由于某种原因它不会下载这些作业?它仍然在同一个域,http://www.math.utsc.utoronto.ca/b41/a*.pdf, where 1 <= * <= 10,但 wget 不下载这个?

答案1

来自以下的联机帮助页wget

使用 HTTP URL,Wget 检索并解析给定 URL 中的 HTML 或 CSS,通过 href 或 src 等标记或使用“url()”功能表示法指定的 CSS URI 值检索文档引用的文件。如果新下载的文件也是 text/html、application/xhtml+xml 或 text/css 类型,则会对其进行解析并进一步跟踪。

换句话说,如果文件位置没有在页面源代码中明确写为href或或类似内容,而是由一些 JavaScript 片段生成或在向服务器提交一些请求后返回(例如由 php 返回),即使它存储在同一个域中,我们也无法对其进行太多处理。srcwget

答案2

需要考虑的一个因素是 wget 将域名中的任何差异视为一个单独的域,并且默认情况下不会偏离所提供的域。

IE。如果您要求它下载https://example.com/somefile.html,那么它不会遵循在表单中找到的任何内部链接<a href="https://www.example.com...">

在这种情况下,需要提供--span-hosts --domains=example.com

请注意,似乎没有必要显式提供www.example.com域参数,因为在这种情况下它似乎会自动匹配。

相关内容