一、Selenium的安装
1.Selenium模块安装
输入以下命令
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
2.浏览器驱动的下载安装
在下载浏览器驱动时,要看好浏览器的版本,浏览器不同,则驱动程序也就不同,这里我就拿我常用的Google Chrome举例吧,打开设置,然后点击关于Chrome,就可以看到自己的版本为多少了
下载跟版本差不多的驱动,圈起来的这两个都可下载
下载链接:下载Chrome驱动
下载完后解压缩,将ChromeDriver.exe拷贝到指定目录,后面写代码会继续使用
二、Selenium的基本使用
from selenium import webdriver #导入webdriver
import time
wd=webdriver.Chrome("D:/chromedriver.exe")
#获取Chrome驱动实例,Webdriver 后的方法名是浏览器的名称,
# 参数可以省略,但是需要将驱动的路径放入到系统的环境变量中
wd.get("http://www.baidu.com") #打开百度,wd.get(url)可以打开指定的网页。
time.sleep(3) #睡眠3秒,否则有可能页面未加载完成
wd.close() #关闭浏览器,wd.close()关闭 selenium 打开的浏览器。
三、元素选择器
定位一个元素 | 定位多个元素 | 含义 |
---|---|---|
find_element_by_id | find_elements_by_id | 通过元素id定位 |
find_element_by_name | find_elements_by_name | 通过元素名称定位 |
find_element_by_tag_name | find_elements_by_tag_name | 通过标记名称定位 |
find_element_by_class_name | find_elements_by_class_name | 通过类名定位 |
find_element_by_css_selector | find_elements_by_css_selector | 通过css选择器定位 |
find_element_by_xpath | find_elements_by_xpath | 通过xpath表达式定位 |
find_element_by_link_text | find_elements_by_link_text | 通过完整超链接文本定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 通过部分超链接文本定位 |
CSS 选择器的基本使用方法简要如下:
Id 选择器使用#,如“#u1”,定位 id 为 u1 的元素;类选择器使用“.”,如“.mnav”,定位所有 class 为 mnav 的元素;元素选择器直接使用标签名,如“div”,定位所有的 div;组合选择器,以上多种元素选择方式组合在一起,是使用频率最高的一类选择器。如“#u1 .pf”,定位 id 为 u1 的元素下的所有 class 为 pf 的元素;“#u1>.pf”,定位 id 为 u1 的元素下的 class 为 pf 的元素,并且要求 class 为 pf 的元素是 u1 的直接子级。
from selenium import webdriver #导入webdriver
import time
wd=webdriver.Chrome("D:/chromedriver.exe")
wd.get("http://www.baidu.com") #打开百度,wd.get(url)可以打开指定的网页。
time.sleep(3) #睡眠3秒,否则有可能页面未加载完成
element=wd.find_element_by_css_selector("#s-top-left") #定位id为s-top-left的元素
print(element.get_attribute("outerHTML")) #使用get_attribute方法来获 取元素的属性,参数可以是合法的 html标签属性
element_ul=wd.find_element_by_id("s-top-left")
print(element_ul.text) #element1.text表示获取元素的文本节点,并包括下级文本
wd.close() #关闭浏览器
下表为常用的CSS选择器和其他选择器的对比
CSS选择器 | 其他选择器 |
---|---|
wd.find_element_by_css_selector("#u1") | wd.find_element_by_id(“u1”) |
wd.find_element_by_css_selector("[name=‘tj_trmap’]") | wd.find_element_by_name(“tj_trmap”) |
wd.find_element_by_css_selector(".bri") | wd.find_element_by_class_name("bri) |
wd.find_element_by_css_selector(“u1”) | wd.find_element_by_tag_name(“u1”) |
from selenium import webdriver #导入webdriver
import time
wd=webdriver.Chrome("D:/chromedriver.exe")
wd.get("http://www.baidu.com") #打开百度,wd.get(url)可以打开指定的网页。
time.sleep(3) #睡眠3秒,否则有可能页面未加载完成
element=wd.find_element_by_link_text("新闻")
# print(element.get_attribute("outerHTML"))
element1=wd.find_element_by_partial_link_text("闻")
print(element1.text)
wd.close() #关闭浏览器
四、操纵元素的方法
from selenium import webdriver #导入webdriver
import time
wd=webdriver.Chrome("D:/chromedriver.exe")
wd.get("http://www.baidu.com") #打开百度,wd.get(url)可以打开指定的网页。
time.sleep(3) #睡眠3秒,否则有可能页面未加载完成
wd.find_element_by_link_text("新闻").click() #点击新闻链接
wd.close() #关闭浏览器
from selenium import webdriver #导入webdriver
import time
wd=webdriver.Chrome("D:/chromedriver.exe")
wd.get("http://www.baidu.com") #打开百度,wd.get(url)可以打开指定的网页。
time.sleep(3) #睡眠3秒,否则有可能页面未加载完成
#在input标签中输入数据,使用send_keys("字符串")
wd.find_element_by_id("kw").send_keys("python") #发送数据
time.sleep(3)
wd.find_element_by_id("su").click() #点击检索按钮
time.sleep(3)
print(wd.page_source) #获取页面HTML文本,相当于get_html函数实现的功能。
wd.close() #关闭浏览器