python学习笔记之八[selenium 浏览器模拟]

第一步准备:
需要python安装好selenium:
安装方法 pip install selenium
需要驱动 谷歌:chromedriver +谷歌浏览器
IE: chromedriver + ie浏览器
phantomjs (此方法不需要浏览器)

第二步 编码:
使用selenium我主要是为了获得网页源码,当然对网页直接操作是可以的,不过现在我还不需要
获取网页只需四步就可以了

#1 导入webdriver  因为只需要使用浏览器引擎
from selenium import webdriver

#2 获取驱动 
#这里的参数是你的驱动放在什么位置 我的放在 library下面 
driver = webdriver.PhantomJS("./../library/phantomjs") # PhantomJS 无浏览器
#driver = webdriver.Chrome("./../library/chromedriver") #调用谷歌浏览器写法
#driver = webdriver.Ie("./../library/IEDriverServer") # 调用ie浏览器写法

#3 启动驱动调用浏览器访问网页
driver.get("http://www.jianshu.com/writer#/notebooks/5763572/notes/14158750/preview")

 #4 获得网页的html
 html_content = driver.page_source

第三步 验证:

执行时 Ie需要设置浏览器:
设置》internet选项》安全》勾掉 启用保护模式
同时最好关掉杀毒软件如:数字软件,某山,。。。

python学习笔记之八[selenium 浏览器模拟]_第1张图片
勾掉 启用保护模式

以下是谷歌/ie 执行时截图

python学习笔记之八[selenium 浏览器模拟]_第2张图片
IE
python学习笔记之八[selenium 浏览器模拟]_第3张图片
谷歌

可能是我浏览器版本的问题,并没有出现加载后的网页,只出现了驱动默认页面
等我把 延时调大些看看

python学习笔记之八[selenium 浏览器模拟]_第4张图片
经测试使用智能等待会更好
python学习笔记之八[selenium 浏览器模拟]_第5张图片
经测试使用智能等待会更好

第四步 考虑:
1.很多时候网页有js执行,网页不能很快渲染完成,所以这时需要让程序等待一会
2.很多的网站只针对一种浏览器开发,导致很多浏览器请求时获取不到数据
3.很多主流的网页使用下拉拖拽式动态的加载网页数据,所以这时給驱动添加个滚屏操作很必要的

#综上添加在3和4之间 

js = "var q=document.body.scrollTop=100000"
self.driver.execute_script(js)
self.driver.implicitly_wait(30) # 据说此方法是智能等待,看效果还不错,数据加载完就返回了

你可能感兴趣的:(python学习笔记之八[selenium 浏览器模拟])