关于安装和配置的部份,请看:https://editor.youkuaiyun.com/md/?articleId=111301269
使用selenium的目的,是模仿浏览器来访问和操控网页。
所以,我们要先打开网页:
from selenium import webdriver
# 创建 WebDriver 对象,指明使用PhantomJS驱动
driver = webdriver.Chrome()
#如未配置环境变量,请加上驱动路径
# wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
driver.get('https://www.baidu.com')
#get方法会一直页面被完成加载,然后才继续程序
打开浏览器后,还不能开始任务。
我们还得找到想要操控的网页元素。
定位元素的8种方式:
使用下面的方法,查找指定的元素进行操作即可
find_elements_by_tag_name 根据标签名找
find_element_by_id 根据id找节点
find_elements_by_name 根据name找
find_elements_by_xpath 根据xpath查找
find_elements_by_class_name 根据class名字查找
find_element_by_css_selector 根据css定位
find_elements_by_link_text 通过链接文字定位
find_elements_by_partial_link_text 通过部分链接文字定位
注意: find_elements 为查找多个元素,find_element为查找单元素
find_element_by_name #结果为第一个元素
find_elements_by_name #为多个同名元素
例:
<input type="text" name="user-name" id="passwd-id" />
# 通过tag name定位:
driver.find_element_by_tag_name("input")
# 通过id定位:
driver.find_element_by_id("passwd-id")
# 通过name定位:
driver.find_element_by_name("user-name")
# 通过class name定位:
driver.find_element_by_class_name("class_name")
# 通过xpath定位:
driver.find_element_by_xpath("//input[@id='passwd-id']")
# 通过css定位:
driver.find_element_by_css_selector("#passwd-id")
爬虫的话,还要获取网页中的数据。很简单:
data = driver.find_element_by_id("passwd-id").text
访问元素内属性get_attribute()
获取超链接:
link = driver.find_element_by_link_text('text').get_attribute("href")
其他爬虫常用的方法和属性:
driver.page_source #获取网页源码
driver.title #页面标题
driver.find_element_by_id("passwd-id").text #获取元素的文本
关于定位,还有两个私有方法:
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH,'//input[@id='passwd-id']')
driver.find_elements(By.XPATH,'//input[@id='passwd-id']')