免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6247 | 回复: 4
打印 上一主题 下一主题

用python下载PDF问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-26 09:56 |只看该作者 |倒序浏览
http://www.in.gov.br/imprensa/pe ... acaoInicial=01%2F10
网站每个点进去都是一个pdf,但是我找不到下载的链接,求助如何用python把这些PDF下载下来,谢谢了

论坛徽章:
0
2 [报告]
发表于 2011-11-02 14:03 |只看该作者
本帖最后由 baggio1987 于 2011-11-02 14:07 编辑

查看源代码后可以看到,每一个被点击的元素的源代码如下:
  1. <div align="center">
  2.     <a href="javascript:void(0);" title="Abrir esta edi&ccedil;&atilde;o jornal em nova janela" onclick="redirecionaSelect('http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&amp;pagina=53&amp;data=10/10/2011');"> Diário Oficial da União - Seção 1</a>
  3. </div>
复制代码
可以看出,点击这个元素,会调用redirecionaSelect函数,后面的参数是新打开页面的网址a
  1. http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&amp;pagina=53&amp;data=10/10/2011
复制代码
真正打开的网址b是
  1. http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&pagina=53&data=10/10/2011
复制代码
其实就是amp;被删除了,我也不知道为什么会有这样的处理。

新网址b打开后,查看源代码,里面有这么一句
  1. <frame name="visualizador" src="http://www.in.gov.br/servlet/INPDFViewer?jornal=1&pagina=53&data=10/10/2011&captchafield=firistAccess"  />
复制代码
经过我的试验,pdf的下载网址c就是
  1. http://www.in.gov.br/servlet/INPDFViewer?jornal=1&pagina=53&data=10/10/2011&captchafield=firistAccess
复制代码
然后我用python编了个小程序,帮你下载下来pdf了。
  1. import urllib

  2. if __name__ == "__main__":

  3.     url = 'http://www.in.gov.br/servlet/INPDFViewer?jornal=1&pagina=53&data=10/10/2011&captchafield=firistAccess'
  4.     proxie={'http':'http://127.0.0.1:8086'}
  5.     opener = urllib.URLopener(proxies=proxie)
  6.     opener.retrieve(url,'c:\\Users\\baggio\\Desktop\\4.pdf')
复制代码
其实第一个页面的网址a和网址b以及第二个页面的pdf下载地址c之间是有固定关系的,我放在一起你看看,应该用程序可以实现从a到c的转换
  1. http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&amp;pagina=53&amp;data=10/10/2011
  2. http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&pagina=53&data=10/10/2011
  3. http://www.in.gov.br/servlet/INPDFViewer?jornal=1&pagina=53&data=10/10/2011&captchafield=firistAccess
复制代码

论坛徽章:
1
丑牛
日期:2013-09-29 19:04:50
3 [报告]
发表于 2011-11-02 15:35 |只看该作者
这个分析的不错。

论坛徽章:
0
4 [报告]
发表于 2011-11-07 16:15 |只看该作者
结果是这样,是怎么回事?
>>>
Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\My Documents\新建 文本文档.py", line 11, in <module>
    opener.retrieve(url,'4.pdf')
  File "C:\Python26\lib\urllib.py", line 238, in retrieve
    fp = self.open(url, data)
  File "C:\Python26\lib\urllib.py", line 206, in open
    return getattr(self, name)(url)
  File "C:\Python26\lib\urllib.py", line 345, in open_http
    h.endheaders()
  File "C:\Python26\lib\httplib.py", line 892, in endheaders
    self._send_output()
  File "C:\Python26\lib\httplib.py", line 764, in _send_output
    self.send(msg)
  File "C:\Python26\lib\httplib.py", line 723, in send
    self.connect()
  File "C:\Python26\lib\httplib.py", line 704, in connect
    self.timeout)
  File "C:\Python26\lib\socket.py", line 514, in create_connection
    raise error, msg
IOError: [Errno socket error] [Errno 10061]
>>>

论坛徽章:
0
5 [报告]
发表于 2011-11-16 09:48 |只看该作者
回复 4# wqjwftcaqr

不清楚,我这边测试是正常的。也许是版本的问题。我用的是python2.7

其实你可以根据我的分析自己写程序。不用一定要复制我的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP