爬虫——Selenium库的使用
介绍
selenium库是一个自动化测试工具,能够驱动浏览器模拟人的操作,如鼠标单击、键盘输入等。
面对JavaScript渲染问题,在数据挖掘时就需要使用selenium库
下载驱动
以下提供部分浏览器下载驱动的网址,注意:下载的驱动版本要与本机浏览器的版本一致
下载完解压,把exe文件复制到你python3的文件夹下然后再复制一份重命名为MicrosoftWebDriver.exe
Chrome:https://chromedriver.chromium.org/downloadsEdge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/Firefox:https://github.com/mozilla/geckodriver/releasesSafari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/Webdriver对浏览器的操作
加载驱动
from selenium import webdriverimport timedg = webdriver.Chrome()time.sleep(3)//如果驱动不在python解释器同一个目录下需要再Chrome中传入驱动的路径//wd = webdriver.Chrome(executable_path='./chromedriver.exe')
窗口操作
# 最大化窗口wd.maximize_window()# 最小化窗口wd.minimize_window()# 设置窗口宽度和高度wd.set_window_size(1400,1500)# 设置窗口位置wd.set_window_position(100,100)wd.get('https://www.baidu.com/')#另开一个窗口,不在旧窗口上跳转js ="window.open('https://blog.csdn.net/qq_40216188')"driver.execute_script(js)# 关闭窗口# wd.close()wd.quit()
窗口的上滑、下滑、刷新
wd.back() #后退time.sleep(3)wd.refresh() # 刷新time.sleep(3)wd.forward() # 前进
元素定位
在定位之前要导入By类
from selenium.webdriver.common.by import By
定位单个元素使用:find_element()
定位多个元素使用:find_elements(),返回值是列表
- 使用id
wd.find_element(By.ID,id值)wd.find_elements(By.ID,id值)
- 使用标签的name属性定位By.NAME
- 使用标签的class属性定位By.CLASS_NAME
- 使用标签名定位By.TAG_NAME
- 使用link定位1. By.LINK_TEXT:定位有herf属性且内容要和第二个参数完全相同2. By.PARTIAL_LINK_TEXT:定位有herf属性且内容要和第二个参数进行模糊匹配
- 通过Xpath定位By.XPATH
文本输入清除
- send_keys(内容) 文本输入
- clear() 文本清空
wd.find_element(By.ID,"input").send_keys("这是文本输入")
wd.find_element(By.ID,"input").clear()
获取页面内容
- 标题
- 源码
- 页面连接
- 标签内的文本
print(wb.title)
print(wb.page_source)
print(wb.current_url)
print(wb.find_element(By.ID,"input").text)
下拉列表操作
- 使用前需要导入
from selenium.webdriver.support.select import Select
- Select() 判断标签元素是否为下拉列表元素,不是的话报错,是返回Select对象
- select_by_value() 通过下拉列表的value属性值选择选项
- select_by_text() 通过下拉列表的文本内容选择选项
- select_by_index(整数) 通过下拉列表的索引选择选项,索引从0开始
- options 下拉列表内options标签,返回的是一个列表
以上是一些常用方法,需要其他的可以右击Select -> 转到 -> 实现 查看源代码
鼠标控制
from selenium.webdriver.common.action_chains import ActionChains
bt = wb.find_element(By.NAME,"button")
- 单击bt.click()
- 双击ActionChains(wb).double_click(bt).perform()
- 右击
- ActionChains(wb).context_click(bt).perform()
- 拖动参数:1. source:待拖动的元素2. target:拖至并释放的目标元素ActionChains(wb).drag_and_drop(source, target).perform()
- 悬浮ActionChains(wb).move_to_element(collect).perform()
键盘控制
from selenium.webdriver.common.keys import Keys
in = wb.find_element(By.NAME,"input")
同时按两个键用逗号隔开,例如:in.send_keys(Keys.BACK_SPACE,’c‘)——这是ctrl+c
- 输入文本in.send_keys(Keys.ENTER)
- 回车in.send_keys(Keys.BACK_SPACE)
- ctrlin.send_keys(Keys.CONTROL)
- F1in.send_keys(Keys.F1)
- 空格in.send_keys(Keys.SPACE)
- Tabin.send_keys(Keys.TAB)
- 退出键in.send_keys(Keys.ESCAPE)
- Altin.send_keys(Keys.ALT)
- shiftin.send_keys(Keys.SHIFT)
- 向下键in.send_keys(Keys.ARROW_DOWN)
- 向左键in.send_keys(Keys.ARROW_LEFT)
- 向右键in.send_keys(Keys.ARROW_RIGHT)
- 向上键in.send_keys(Keys.ARROW_UP)
版权归原作者 又菜又爱玩的小趴菜 所有, 如有侵权,请联系我们删除。