ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-03-19 11:02:22  阅读:253  来源: 互联网

标签:浏览器 Python selenium button Selenium 爬虫 element find browser


一、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,selenium,button,Selenium,爬虫,element,find,browser
来源: https://blog.csdn.net/m0_46684880/article/details/123589126

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有