我想下载这个网站上的所有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 返回),即使它存储在同一个域中,我们也无法对其进行太多处理。src
wget
答案2
需要考虑的一个因素是 wget 将域名中的任何差异视为一个单独的域,并且默认情况下不会偏离所提供的域。
IE。如果您要求它下载https://example.com/somefile.html
,那么它不会遵循在表单中找到的任何内部链接<a href="https://www.example.com...">
。
在这种情况下,需要提供--span-hosts --domains=example.com
请注意,似乎没有必要显式提供www.example.com
域参数,因为在这种情况下它似乎会自动匹配。