免费注册 查看新帖 |

Chinaunix

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

关于批量下载动态加载图片问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-25 03:40 |只看该作者 |倒序浏览
本帖最后由 PfanAya 于 2012-10-25 05:02 编辑
  1. import urllib, re
  2. from subprocess import call
  3. baiduimage = urllib.urlopen("http://image.baidu.com/i?tn=list&word=liulan#%E7%BE%8E%E5%A5%B3|%E5%85%A8%E9%83%A8").read()
  4. imageurl = re.compile(r'\<image.+src="(.+)".*\>')
  5. urls = imageurl.findall(baiduimage)
  6. for url in urls:
  7.     call(['wget', url])
  8. print 'Done'
复制代码
想批量下载百度的图片,上面的代码如果在一般的网页上是没问题的,但百度图片是动态加载的,执行完baiduimage = urllib.urlopen("http://image.baidu.com/i?tn=list&word=liulan#%E7%BE%8E%E5%A5%B3|%E5%85%A8%E9%83%A8").read()通过print baiduimage查看到下载的网页里一个jpg都没有,另外百度图片比如http://t1.baidu.com/it/u=3308324 ... ;fm=25&gp=0.jpg 都是不能直接访问的,会出现403 Forbidden

有个想法:在脚本中调用 webbrowser模块调用系统默认浏览器打开网页,然后去浏览器的缓存里把图片提取出来,但这样也只能提取几个 ,对于动态加载的图片怎么下载呢?

不知道各位有什么办法没?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-10-25 11:01 |只看该作者
本帖最后由 linux_c_py_php 于 2012-10-25 11:02 编辑

1, AJAX拉回来的图片地址, 你不执行JS是拿不到的, 你必须去读JS代码, 找到AJAX的请求相关代码, 自己模拟AJAX请求来获取图片地址.
2, 加上referer的header,图片防盗链了。

论坛徽章:
0
3 [报告]
发表于 2012-10-25 13:21 |只看该作者
回复 2# linux_c_py_php

多谢回复:wink:

那就是说即使有图片的地址也不能通过wget来下载了 必须要用浏览器加载JS后才可以在浏览器里看到

还有关于通过webbrowser调用浏览器打开网页然后从浏览器的缓存里获取图片的方法您觉得可行吗?百度的图片跟微博一样是动态加载的,滚动条向下滚才能获得图片,这有什么办法吗?搜了一下好像没有控制浏览器滚动和模块……





   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-10-25 14:44 |只看该作者
可以下载, 但你要读JS代码, 找到AJAX请求的地址和请求应答格式.

别折腾webbrowser这种土办法了...

论坛徽章:
0
5 [报告]
发表于 2012-10-25 20:41 |只看该作者
回复 4# linux_c_py_php


好吧 可惜我不会JS 那这个问题就先放放吧 等我学些JS再来想它

再次感谢你的回复:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP