1.下载selenium
直接pip install selenium
2.下载Phantomjs
在这个网页里找到对应版本,并下载即可:http://phantomjs.org/download.html
下载完之后要添加到环境变量
我在使用的时候报了一个这个错误:
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless ’
用户警告:对Phantomjs的Selenium支持已被弃用,请改用Chrome或Firefox的无头版本。
warning.warn(‘对PhantomJS的Selenium支持已被弃用,请使用headless’
原因是selenium版本太高,于是对selenium降级
首先,卸载当前3.141.0版本的selenium:pip uninstall selenium
然后,安装2.48.0版本的selenium:pip install selenium==2.48.0
3.获取页面名为wrapper的id标签的文本内容
from selenium import webdriver
driver=webdriver.PhantomJS()
driver.get(‘http://www.baidu.com’)
data=driver.find_element_by_id(‘wrapper’).text
print(data)
4.获取页面标题
print(driver.title)
5.生成当前页面快照并保存
driver.save_screenshot(“index.png”)
6.百度搜索长城并截图
import time
(1)id=“kw"是百度搜索输入框,输入字符串"长城”
driver.find_element_by_id(“kw”).send_keys(u"长城")
(2)id="su"是百度搜索按钮,click() 是模拟点击
driver.find_element_by_id(“su”).click()
(3)time.sleep(2)这个时间表示服务器响应时间
time.sleep(2)
driver.save_screenshot(“index.jpg”)
7.获取标题分类
#获取页面数据
data=driver.page_source
html=etree.HTML(data)
class_info=html.xpath("//a[@class=‘mnav’]/text()")
print(class_info)
8.获取当前页面的cookie
print(driver.get_cookies())
9.回车
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id(“kw”).send_keys(u"长城")
#按下ctrl+A
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,“a”)
#按下ctrl+X
driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,“x”)
#重新输入
driver.find_element_by_id(“kw”).send_keys(u"长江")
time.sleep(5)
driver.find_element_by_id(“su”).submit()
driver.save_screenshot(“1.jpg”)
10.获取标签的属性
#格式:标签.get_attribute(“属性名”)
print(element.get_attribute(“type”))
print(element.get_attribute(“class”))
11.定位UI元素
find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
12.关闭浏览器
#关闭当前页面,如果只有一个页面,会关闭浏览器
driver.close()
#关闭浏览器
driver.quit()