我想使用Python在网站上自动下载一些PDF(http://bibliotecadigitalhispanica.bne.es)。我试过使用urllib/urllib2 /机械化模块(我一直在使用其他网站:这包括像urlopen,urlretrieve等标准功能),但在这里,链接的JavaScript嵌入其中href属性进行一些处理并打开PDF,这些模块似乎无法处理,至少从我在这里阅读的内容中可以看出。例如,当我做到以下几点:使用Python执行JavaScript链接href中的链接
request = mechanize.Request('the example url below')
response = mechanize.urlopen(request)
它拿回包含HTML页面只是 - 我似乎无法提取PDF(有一些页面中没有它的链接,要么)。
我通过查看真实浏览器中的标题(使用Firefox中的LiveHTTPHeaders扩展)知道发出了很多HTTP请求并最终返回PDF(并显示在浏览器中)。我希望能够拦截并下载它。具体而言,我得到了一系列302和304响应,最终导致PDF。
以下是我正在抓取的链接属性示例: href ='javascript:open_window_delivery(“http://bibliotecadigitalhispanica.bne.es:80/verylonglinktoaccess”);'
看来,如果我执行嵌入到href属性中的JavaScript,我最终可以到达PDF文档本身。我尝试过使用硒,但它有点混乱 - 我不太清楚在阅读文档时如何使用它。有人可以提出一种方法(通过我没有尝试过的模块或通过我拥有的模块),我可以做到这一点吗?
非常感谢您对此有任何帮助。
PS:如果你想看到什么,我试图复制,我试图访问以下网页上面提到的PDF链接(与PDF图标的):): http://bibliotecadigitalhispanica.bne.es/R/9424CFL1MDQGLGBB98QSV1HFAD2APYDME4GQKCBSLXFX154L4G-01075?func=collections-result&collection_id=1356
你能用正则表达式来提取uri吗? – max 2012-03-16 13:25:10
我也试过这样做,从JavaScript函数调用中提取URI,然后尝试访问机械和urllib2,但目前为止没有运气 - 它只是让我回到包含HTML页面: - /从查看头部,它看起来好像有很多请求都是使用这个URI进行的,包括一些重定向。有没有办法抓住所有这些回应?也许这也可能解决这个问题。顺便谢谢你的回复。 – spanport 2012-03-17 00:14:08
更新:通过查找最接近PDF文件的URL的结构,然后从这些文件进行重定向,我最终在该特定网站上找到了解决方法。干杯! – spanport 2012-03-17 13:41:57