Python教程

Python 爬虫学习笔记(八(1))Selenium的基本使用

本文主要是介绍Python 爬虫学习笔记(八(1))Selenium的基本使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、Selenium

  1. Selenium是一个用于web应用程序测试的工具。
  2. Selenium测试直接运行在浏览器中,就像真正的用户在操作
  3. 支持通过各种driver(FirefoxDriver,InternetExplorerDriver,ChromeDriver)驱动真实浏览器完成测试
  4. Selenium支持无界面浏览器操作

我们之前都是通过模拟浏览器,向服务器发送请求获取响应数据的,有些网站会校验你的浏览器,隐藏一些信息,这时候就需要用Selenium来处理(驱动一个真实的浏览器)。


二、Selenium安装

以Chrome浏览器为例,查看浏览器版本,在谷歌浏览器驱动下载地址中下载相应版本和操作系统的驱动
在这里插入图片描述
下载成功后,解压称.exe文件放在项目工程目录下即可。不需要安装和运行。

之后在PyCharm pip install selenium库


三、Selenium的基本使用

可以分为三个步骤:

  1. 导入selenium库
  2. 创建浏览器操作对象(需要驱动的路径)
  3. 访问网站

示例代码如下:

# (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系列的,用老方法。二是使用新函数(推荐)。

老函数有以下六种

  1. find_element_by_id (常用)
  2. find_element_by_name
  3. find_element_by_xpath (常用)
  4. find_element_by_tag_name
  5. find_element_by_css_selector (常用)
  6. 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库,新方法的用法也很简单

  1. 首先导入from selenium.webdriver.common.by import By
  2. 函数名是全部改为了find_element()或find_elements(),不加s返回一个对象,加s即返回一个列表。
  3. 函数里面有两个参数,第一个参数是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获取元素信息

  1. .get_attribute获取标签的属性
  2. .tag_name获取标签的名字
  3. .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
		  新闻

总结

  1. selenium测试直接运行在浏览器中,并且能实现自动化
  2. selenium元素定位方法已经更新,建议使用新方法
  3. find_element返回一个对象,而find_elements返回一个列表,包含所有匹配对象
  4. get_attribute可以指定获取哪个属性的值,.text获取元素文本(尖括号之间的文本,标签之间夹着的文本)
这篇关于Python 爬虫学习笔记(八(1))Selenium的基本使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!