有没有办法从命令行下载以下pdf?
http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf
一个简单的wget http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf
返回一个网页。然而,如果你在firefox中访问它,你会得到一个pdf。
与如何从我试图找到python解决方案的网页上获得JS重定向的pdf链接有关。
如果你不需要一个模拟web浏览器并运行JS的通用答案(你需要这样做才能获得通用解决方案),但只需要从你自己获得的html中找到下载链接就可以了,那么你可以:
wget
页面(wget将遵循HTTP重定向,这样它将为您提供带有JS的目标html来进行下载)- 然后,您需要解析HTML并找到您要查找的链接
- 你需要
wget
那个链接
我写了一些简单的脚本来为你做2,3https://github.com/pjump/wgetbyCss为了使用它们,您需要
- ruby
- 机械化宝石(
gem install mechanize
)
然后你可以做:
./wget_by_link_text 'http://www.ofsted.gov.uk/filedownloading/?id=1295389&type=1&refer=1' "Please download the requested file here"
即:
./wget_by_link_text url link_text [save_as]
通过文本获取该链接。或者,您可以使用wget_by_css
脚本并通过其.auto_click
类或其他css选择器获取链接。
简而言之:您不能使用wget
/curl
您可以使用curl -L
约束curl
来遵循重定向
curl -L http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf
但它不起作用,正如你所看到的卷曲常见问题解答:
4.14重定向在浏览器中有效,但在curl中无效!
curl很好地支持HTTP重定向(参见第3.8项)至少支持另外两种执行curl重定向的方法不是:
元标记。您可以编写一个HTML标记,使浏览器在一段时间后重定向到另一个给定的URL。
Javascript。您可以编写嵌入HTML页面的Javascript程序将浏览器重定向到另一个给定的URL。
没有办法让curl遵循这些重定向。您必须手动确定页面的设置,或者编写脚本其解析结果并获取新的URL。
所以我认为坏消息是,你必须在脚本中自己完成,请参阅你的另一个问题作为参考:如何获得从网页链接的JS重定向pdf
考虑使用硒,女王的网站似乎是爬行者的难题。