Python 爬虫学习笔记(八(1))Selenium的基本使用
2022/3/19 11:27:47
本文主要是介绍Python 爬虫学习笔记(八(1))Selenium的基本使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、Selenium
- Selenium是一个用于web应用程序测试的工具。
- Selenium测试直接运行在浏览器中,就像真正的用户在操作
- 支持通过各种driver(FirefoxDriver,InternetExplorerDriver,ChromeDriver)驱动真实浏览器完成测试
- Selenium支持无界面浏览器操作
我们之前都是通过模拟浏览器,向服务器发送请求获取响应数据的,有些网站会校验你的浏览器,隐藏一些信息,这时候就需要用Selenium来处理(驱动一个真实的浏览器)。
二、Selenium安装
以Chrome浏览器为例,查看浏览器版本,在谷歌浏览器驱动下载地址中下载相应版本和操作系统的驱动
下载成功后,解压称.exe文件放在项目工程目录下即可。不需要安装和运行。
之后在PyCharm pip install selenium库
三、Selenium的基本使用
可以分为三个步骤:
- 导入selenium库
- 创建浏览器操作对象(需要驱动的路径)
- 访问网站
示例代码如下:
# (1)导入selenium from selenium import webdriver # (2)创建浏览器操作对象 path = 'chromedriver.exe' # 驱动的路径 browser = webdriver.Chrome(path) # (3)访问网站 url = 'https://www.jd.com' browser.get(url) # 打开网址 content = browser.page_source # 页面内容(源码) print(content)
四、Selenium的元素定位
元素定位:自动化要做的就是模拟鼠标和键盘来操作(点击输入等)这些元素(例如百度一下的搜索按钮)。操作这些元素的前提是要找到它们,webdriver提供了很多定位元素的方法。
注:selenium库更新了,从3.0版本升级到了4.0,所以以前的老函数弃用了,下面我会把新老函数一起记录下来。解决方案有两种:一是把最新下载的selenium库卸载,然后指定安装版本为3.0系列的,用老方法。二是使用新函数(推荐)。
老函数有以下六种
- find_element_by_id (常用)
- find_element_by_name
- find_element_by_xpath (常用)
- find_element_by_tag_name
- find_element_by_css_selector (常用)
- find_element_by_link_text
具体使用如下,以百度以下的输入框,搜索按钮和左上角的’视频’超链接为例
# 根据id寻找对象 button = browser.find_element_by_id('su') # 根据标签的属性值寻找对象 button = browser.find_element_by_name('wd') # 根据xpath语句获取对象 button = browser.find_element_by_xpath('//input[@id="su"]') # 根据标签的名字获取对象 button = browser.find_element_by_tag_name('input') # 根据前端的语法来获取对象 button = browser.find_element_by_css_selector('#su') # 根据链接的描述来获取对象 button = browser.find_element_by_link_text('视频')
我电脑上安装了最新的selenium库,新方法的用法也很简单
- 首先导入from selenium.webdriver.common.by import By
- 函数名是全部改为了find_element()或find_elements(),不加s返回一个对象,加s即返回一个列表。
- 函数里面有两个参数,第一个参数是By.ID, 即通过id查找,第二个参数是id的值,和老函数其实也特别像。还多了一个根据类名获取对象。
button = browser.find_element(By.ID, 'su') button = browser.find_element(By.NAME, 'wd') button = browser.find_element(By.XPATH, '//input[@id="su"]') button = browser.find_element(By.TAG_NAME, 'input') button = browser.find_element(By.CSS_SELECTOR, '#su') button = browser.find_element(By.LINK_TEXT, '视频') # 根据类名获取对象 button = browser.find_element(By.CLASS_NAME, 's_ipt')
五、Selenium获取元素信息
- .get_attribute获取标签的属性
- .tag_name获取标签的名字
- .text获取元素文本(不是标签内部,而是尖括号之间的文本)
示例如下:
# 获取标签属性 input_ = browser.find_element(By.ID, 'su') print(input_.get_attribute('value')) # 获取标签的名字 print(input_.tag_name) # 获取元素文本 a = browser.find_element(By.LINK_TEXT, '新闻') print(a.text)
输出结果:百度一下 input 新闻
总结
- selenium测试直接运行在浏览器中,并且能实现自动化
- selenium元素定位方法已经更新,建议使用新方法
- find_element返回一个对象,而find_elements返回一个列表,包含所有匹配对象
- get_attribute可以指定获取哪个属性的值,.text获取元素文本(尖括号之间的文本,标签之间夹着的文本)
这篇关于Python 爬虫学习笔记(八(1))Selenium的基本使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型