从JS重定向链接下载pdf



有没有办法从命令行下载以下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中找到下载链接就可以了,那么你可以:

  1. wget页面(wget将遵循HTTP重定向,这样它将为您提供带有JS的目标html来进行下载)
  2. 然后,您需要解析HTML并找到您要查找的链接
  3. 你需要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


考虑使用硒,女王的网站似乎是爬行者的难题。

相关内容

  • 没有找到相关文章

最新更新