有没有办法从命令行下载以下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。
与How to get a JS redirected pdf linked from a web page相关,我试图找到一个python解决方案。
答案 0 :(得分:1)
如果您不需要模拟Web浏览器并运行JS的通用答案(您需要这样做以获得通用解决方案),但只需从您自己获得的html中找到下载链接就可以了,那么你可以:
wget
页面(wget将遵循HTTP重定向,以便这将为您提供目标html与JS进行下载)wget
该链接我在https://github.com/pjump/wgetbyCss写了一些简单的脚本来为你做2,3 要使用它们,您需要
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选择器获取链接。
答案 1 :(得分:-1)
简而言之:您无法使用wget
/ curl
您可以使用curl -L
约束curl
来关注重定向
curl -L http://www.ofsted.gov.uk/provider/files/1295389/urn/EY298883.pdf
但它不起作用,因为你可以看到curl-FAQ:
4.14重定向在浏览器中工作,但不能用于卷曲!
curl支持HTTP重定向正常(参见第3.8项)。浏览器一般 支持至少两种其他方式来执行curl所做的重定向 不:
元标记。您可以编写一个HTML标记,该标记将导致浏览器 在一段时间后重定向到另一个给定的URL。
的Javascript。您可以编写嵌入HTML页面的Javascript程序 将浏览器重定向到另一个给定的URL。
没有办法让卷曲跟随这些重定向。你必须要么 手动确定页面设置要执行的操作,或者编写脚本 解析结果并获取新URL。
所以我认为是坏消息,您必须在脚本中自行完成,请将您的其他问题视为参考:How to get a JS redirected pdf linked from a web page
考虑使用seleniumhq女王网站似乎对抓取者来说是一个难题。