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

Eastmount
Python领域优质创作者
博客专家认证
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,问题可能有点低级;同时主要是测试动态显示和下载图片功能,没有去恶意破坏那个网站,希望各位程序猿交流,告知我解决方法,小弟谢谢~
...全文
2280 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eastmount 2015-12-07
  • 打赏
  • 举报
回复
没有好的回复,自己结贴吧!哎~

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧