[求助] 如何使用selenium+python获取动态显示的图片

Eastmount 学生  2015-08-27 03:47:06
最近在学习selenium和python相关的自动化测试及爬虫知识,可以通过selenium+PhantomJS获取一些JavaScript或Ajax动态生成的信息,但是有个朋友问我如何获取http://www.huazhu.com/首页中动态滚动的6张图片时,不知道如何获取?
我的想法如下:通过find_element_by_xpath函数获取路径,在分析HTML获取图片url,通过代码实现。

driver=webdriver.PhantomJS()
driver.get('http://www.huazhu.com')
wait = ui.WebDriverWait(driver,10)
details = driver.find_element_by_xpath("//div[@class='content']/ul/li")
print details.text

filename = os.path.basename(pic_url)
urllib.urlretrieve(pic_url, 'E:\\Picture\\'+filename)

但是在使用selenium获取的代码输出driver.page_source中,发现并没有加载JS后的源码,如下:


总是输出“正在玩命找房子中...”而通过Chrome审查元素想获取的图片格式代码如下所示,这几张图片是循环交替显示的,每次class="actSelected"时显示当前图片,路径为<div><ul><li><a><div style>中。


里面包含图片的URL链接如下所示:

<div style="height: 370px;background:url(http://ws-www.hantinghotels.com//AdminUpload/pic2/flash/2015-06-18-04-00-07-380.jpg)no-repeat center center;"></div>


想请教各位几个问题:
1.为什么通过selenium+PhantomJS获取的两个页面不一样,是因为没有加载JS吗?
2.如何获取这几张图片,它们是动态滚动的。
3.selenium能够获取源码吗?如果获取源码,通过下面这段代码是能够获取图片的(前提是JS显示后的源码)

# coding=utf-8
import urllib
import time
import re
import os
strs = "<div style='height: 370px;background:url(http://ws-www.hantinghotels.com//AdminUpload/pic2/flash/2015-08-20-01-16-34-233.jpg) no-repeat center center;'></div>"
start = strs.find(r'http')
end = strs.find(r')')
url = strs[start:end]
print url
filename = os.path.basename(url)
urllib.urlretrieve(url, 'E:\\'+filename)

获取如下图所示:


PS:刚学习selenium,问题可能有点低级;同时主要是测试动态显示和下载图片功能,没有去恶意破坏那个网站,希望各位程序猿交流,告知我解决方法,小弟谢谢~
...全文
2082 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Eastmount 2015-12-07
没有好的回复,自己结贴吧!哎~
  • 打赏
  • 举报
回复
相关推荐
发帖
脚本语言
加入

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2015-08-27 03:47
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: