修改时间:2016-12-2
修改次数:0
状 态:未完成
Selenium:
强大的网路数据采集工具,最初为网站自动化测试而开发,现广泛用户获取精确的网站快照,selenium 可以让浏览器自动加载页面,获取数据 ,截屏,判断网站某些动作是否发生。
下载
需要和第三方浏览器结合使用,(这里结合PhantomJS,也可以是系统自带浏览器)。
- 下载方式一:pypi.python
sudo python setup.py install //cd 进入目录执行下面语句
- 下载方式二:
pip install selenium
PhantomJS:
‘无头’浏览器,把网站 加载到内存并执行页面上的JavaScript,它不会展示图像化界面。他并非Python库,所以它不能pip安装。
代码一:基本操作
from selenium import webdriver
#web= webdriver.Firefox()
web=webdriver.PhantomJS(executable_path='/Users/yvkd/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs')
web.get('http://www.kushanbaoli.com') #这里的路径是phantomjs下载后一个路径
print web.find_element_by_class_name('am-padding-sm').text
web.close()
代码二:获取节点
#通过class 获取 #->id,.->class
web.find_element_by_class_name("styleName")
web.find_element_by_css_selector("#styleName")
#元素有多个样式时 class="s1,s2,s3"
web.find_element_by_css_selector(".s1,.s2,.s3")
#通过ID获取
web.find_element_by_id('content')
#通过tag
web.find_element_by_tag_name('div')
# #获得源代码
page=web.page_source
#根据xpath来进行查找
web.find_element_by_xpath()
代码三:事件操作
from selenium.webdriver.common.keys import Keys
ele=web.find_element_by_name('user')#假如,找到user的input 输入框
ele.send_keys('younger_times'+Keys.RETURN) #执行填写'younger_times' 并return
代码四:隐式等待(等待DOM发生某种事件时继续代码)
事件包括:
- 弹框
- 一个元素被选中
- 标题改变
- DOM的可见或消失
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
//隐式等待
element=WebDriverWait(web,10).until(EC.presence_of_element_located((By.sID,'loadeButton')))#EC....一个定位器被用来查找id是loadedButton的按钮
//定位器用来创建选择器,
web.find_element(By.ID,"comment").text //类似web.find_element_by_id('comment')
关于By对象:
属性 | 说明 |
---|---|
ID | 通过ID属性查找元素 |
CLASS_NAME | class属性查找元素 |
CSS_SELECTOR | class选择器查找. #idName, .className ,tagName |
LINK_TEXT | 查找< a > 标签文字 |
PARTIAL_LINK_TEXT | 同上类似,不过是部分文字 |
NAME | name属性查找 |
TAG_NAME | 通过HTML标签查找 |
XPATH | XPATH语法查找 |