外汇直播室都是网站做的,企业网站建立制作,三只松鼠网站谁做的,重庆市建设工程网官网Python 网络数据采集#xff08;四#xff09;#xff1a;Selenium 自动化 前言一、背景知识Selenium 4Selenium WebDriver 二、Selenium WebDriver 的安装与配置2.1 下载 Chrome 浏览器的驱动程序2.2 配置环境变量三、Python 安装 Selenium四、页面元素定位4.1 选择浏览器开… Python 网络数据采集四Selenium 自动化 前言一、背景知识Selenium 4Selenium WebDriver 二、Selenium WebDriver 的安装与配置2.1 下载 Chrome 浏览器的驱动程序2.2 配置环境变量三、Python 安装 Selenium四、页面元素定位4.1 选择浏览器开始测试4.2 查找页面元素4.2.1 浏览器查找元素4.2.2 按 XPath 查找4.2.3 显示等待 WebDriverWait 五、SOHU 邮箱自动化登录六、结尾七、参考 作者高玉涵 时间2024.1.11 08:30 博客blog.csdn.net/cg_i 环境Windows 10 专业版 22H2、Python 3.10.4、selenium 4.10.0
前言
在 WEB 功能测试领域Selenium 是一个免费、开源、跨平台的重要工具它可以对 Chrome、Firefox、Safari 等浏览器进行测试支持多种语言如 Python、Java、C#、Ruby、JavaScript 等它足以胜任一切 WEB 功能测试任务。优点它可以模拟浏览器打开你需要爬取的网站可以大概率避免被封。因为我们用 Python 的 requets 库时有些反爬严格的网站可以识别出你当前访问是机器导致爬取数据失败。缺点速度慢。因为 Selenium 必须要打开浏览器然后模拟点击网页这个过程和你打开浏览器访问网站一样的速度。
然而工具本质上只是工具并不能真正发挥价值。要让 Selenium 在爬取数据中发挥真正功能不仅需要有强大工具还需有有效的策略。下面我会给出一个虚构的需求通过简单举例自动化登录 SOHU 邮箱浅尝辄止的介绍如何使用 Selenium方便让你了解其价值希望大家能从中有所收获。当然限于本人水平有限文中举例难免会有疏漏或不当之处敬请广大读者及同行批评指正谢谢各位
一、背景知识
Selenium 4
Selenium 是一系列基于 Web 的自动化工具。它提供了一系统操作函数用于支持 Web 自动化。这些函数非常灵活能够通过多种方式定位界面元素、操作元素并获取元素的各项信息。Selenium 2 开始引入了 WebDriver由浏览器厂商基于一定规范提供原生级别的操作实现就相当于用户在真实操作浏览器。时至今日Selenium 4已经非常成熟本文示例采用此版本。
Selenium WebDriver
是一种简洁而紧密的编程接口可以通过多种编程语言例如 Python、Java、C#、Ruby等来调用 WebDriver。支持全部主流浏览器例如 Firefox、Safari、Edge、Chrome 及 Internet Explorer 等在这些浏览器中的自动化操作等同于按真实用户的方式进行交互。WebDriver 标准是 W3C 标准主要的浏览器厂商Mozilla、Google、Apple、Microsoft等都支持 WebDriver 标准将据此优化浏览器及开发控制代码可将控制代码称为驱动程序各个浏览器拥有自身的 WebDriver 驱动程序提供更统一的原生操作支持使自动化脚本更加稳定。
二、Selenium WebDriver 的安装与配置
浏览器的安装很简单这里不做过多说明主要介绍驱动程序和语言Python绑定的安装与配置。对不同的浏览器需要下载浏览器驱动程序来支持运行。这里主要以 Goolge Chrome 浏览器举例。
2.1 下载 Chrome 浏览器的驱动程序
在 Chrome 浏览器中首先在“帮助 ”-”关于 Google Chrome“菜单中查看浏览器版本在本例中版本号为 120.0.6099.201如图 2-1 所示。 图 2-1 查看 Chrome 版本 然后访问 Chrome 浏览器的驱动程序下载页面 CNPM Binaries Mirror (npmmirror.com)找到对应版本的文件夹如图 2-2 所示。 图 2-2 找到对应版本的文件夹 进入对应版本的文件夹根据操作系统下载对应的驱动程序即可如图 2-3 所示。 图 2-3 该版本下不同操作系统的 Chrome 驱动程序 2.2 配置环境变量
驱动下载完成后建议将驱动程序的 exe 文件放在同一个文件夹下进行管理可按图 2-4 所示。本例中存放路径为 C:\Drivers\chrome。 图 2-4 存放驱动路径 然后还需要将文件夹配置到环境变量 Path 当中这样 Selenium 在运行时就可以通过环境变量 Path 找到驱动程序所在位置。
在”设置“选择”关于“找到单击”高级系统设置“在弹出的”系统属性“对话框中单击”环境变量“按键。在弹出的”环境变量“对话框中在”系统变量“选项组中选择 Path 变量将 C:\Drivers\chrome 添加到环境变量 Path 当中如图 2-5 所示。 图 2-5 配置环境变量 Path 浏览器驱动程序的配置到此完成。
三、Python 安装 Selenium
在命令行窗口中输入以下命令即可完成针对 Python 的 Selenium 库的安装。
pip install selenium安装完成后可以通过以个命令查看安装的版本。
pip show seleniumName: selenium
Version: 4.10.0
Summary:
Home-page: https://www.selenium.dev
Author:
Author-email:
License: Apache 2.0
Location: c:\python310\lib\site-packages
Requires: certifi, trio, trio-websocket, urllib3
Required-by:语言绑定安装完成后就可以开始编写 Selenium 的相关代码了。
四、页面元素定位
4.1 选择浏览器开始测试
在此之前我们已经配置了浏览器的驱动程序因此可以在代码中声明 WebDriver 实例来运行浏览器。
from selenium import webdriverdriver webdriver.Chrome()执行以上代码将打开 Chrome 浏览器。
4.2 查找页面元素
4.2.1 浏览器查找元素
在进行操作之前必须要找到相应的元素。如何才能找到这些元素首先打开浏览器地址栏输入 https://mail.sohu.com/fe/#/login 登录搜狐邮箱页面。 如图 4-1 所示。 图 4-1 SOHU 邮箱登录界面 Path 登录时需要提供邮箱和密码。可以通过查找“请输入您的邮箱”、”请输入您的密码“来定位元素 HTML 标签位置。按下 F12 打开”开发人员工具”选中“元素”按 CtrlF 在查找输入框中输入“请输入您的邮箱”如图 4-2 所示。 图 4-2 浏览器查找元素 重复上述方法依次找到登录邮箱用到的元素。
4.2.2 按 XPath 查找
XPath 的全称为 XML 路径语言XML Path Language它是一种用来确定目标对象在 XML 文档中的位置的语言。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的计算机文件系统中看到的表达式非常相似。由于 HTML 和 XML 的结构非常相似因此 XPath 可以用于 HTML 节点的选取。通过 XPath 表达式几乎可以选取任何相要的节点。
在 Selenium 中可以通过以下函数查找匹配 XPath 表达式的首个元素。
find_element(By.XPATH, //*[placeholder请输入您的邮箱])注基本的 XPath 语法类似于在一个文件系统中定位文件如果路径以斜线/开始那么该路径就表示到一个元素的绝对路径。相对路径定位以斜线//开头表示选择文档中所有满足双斜线//后面的规则的元素无论层级关系。属性定位通过前缀 来指定属性名称然后指定期望的属性值来进行定位。 4.2.3 显示等待 WebDriverWait
在查找元素时需要等待页面全部元素加载完成如因某些原因造成页面无法加载或超时就会造成失败。当然你可以通过 time.sleep(5) 设定强制等待秒数直到页面加载完成后再查找元素。即使想找的元素已经出来了它还是会继续等待这往往会影响程序执行效率。
WebDriverWait(driver,timeout,poll_frequency0.5,ignored_exceptionsNone)
需要通过from selenium.webdriver.support.wait import WebDriverWait 导入模块
driver浏览器驱动timeout最长超时时间默认以秒为单位poll_frequency检测的间隔步长默认为 0.5signored_exceptions超时后的抛出的异常信息默认抛出 NoSuchElementExeception 异常。
与until()或者until_not()方法结合使用
WebDriverWait(driver,10).until(methodmessage)
调用该方法提供的驱动程序作为参数直到返回值为 TrueWebDriverWait(driver,10).until_not(methodmessage)
调用该方法提供的驱动程序作为参数直到返回值为 False在设置时间10s内等待后面的条件发生。如果超过设置时间未发生则抛出异常。在等待期间每隔一定时间默认0.5秒)调用 until 或 until_not 里的方法直到它返回 True 或 False。
五、SOHU 邮箱自动化登录
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWaiturl https://mail.sohu.com/fe/?spmsmpc.home.top-logo.3.1701571180664h7IM3dP_1467#/login
username testsohu.com
password testdriver webdriver.Chrome()try:driver.get(url)mail_input WebDriverWait(driver, 10).until(lambda d: d.find_element(By.XPATH, //*[placeholder请输入您的邮箱]))mail_input.clear()mail_input.send_keys(username)mail_pwd WebDriverWait(driver, 10).until(lambda d: d.find_element(By.XPATH, //*[placeholder请输入您的密码]))mail_pwd.clear()mail_pwd.send_keys(password)# 登录按钮loginbtn WebDriverWait(driver, 10).until(lambda d: d.find_element(By.XPATH, //*[classbtn-login fontFamily]))loginbtn.submit() # 登录
except Exception as e:print(e)六、结尾
通过上述极简的例子介绍如何让自动化测试取得成功然而如何完善和丰富其功能其中涉及较多技术和经验。限于篇幅这里就不展开了建议读者可搜寻相关资料阅读还要结合实际的项目多加思考。
七、参考 入门指南 | Selenium XPath 教程 | 菜鸟教程 (runoob.com) Python 采集网络 数据一BeautifulSoup Python 网络数据采集二抓取所有网页 Python 网络数据采集三采集整个网站 文章转载自: http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.jjnql.cn.gov.cn.jjnql.cn http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.zkqjz.cn.gov.cn.zkqjz.cn http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn http://www.morning.qcztm.cn.gov.cn.qcztm.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.drbd.cn.gov.cn.drbd.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com http://www.morning.jcwhk.cn.gov.cn.jcwhk.cn http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.lptjt.cn.gov.cn.lptjt.cn http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn http://www.morning.grfhd.cn.gov.cn.grfhd.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.bnrnb.cn.gov.cn.bnrnb.cn http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.xrlwr.cn.gov.cn.xrlwr.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.nslwj.cn.gov.cn.nslwj.cn http://www.morning.msxhb.cn.gov.cn.msxhb.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn http://www.morning.wzyfk.cn.gov.cn.wzyfk.cn http://www.morning.hcbky.cn.gov.cn.hcbky.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.lkfhk.cn.gov.cn.lkfhk.cn http://www.morning.cljmx.cn.gov.cn.cljmx.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.qkbwd.cn.gov.cn.qkbwd.cn http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn http://www.morning.trwkz.cn.gov.cn.trwkz.cn http://www.morning.kpypy.cn.gov.cn.kpypy.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.fwrr.cn.gov.cn.fwrr.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.qdrhf.cn.gov.cn.qdrhf.cn http://www.morning.wspyb.cn.gov.cn.wspyb.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.xqknl.cn.gov.cn.xqknl.cn http://www.morning.qrlsy.cn.gov.cn.qrlsy.cn http://www.morning.sfwd.cn.gov.cn.sfwd.cn http://www.morning.yngtl.cn.gov.cn.yngtl.cn http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.sjzsjsm.com.gov.cn.sjzsjsm.com http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.jjnry.cn.gov.cn.jjnry.cn http://www.morning.rqxch.cn.gov.cn.rqxch.cn http://www.morning.jnkng.cn.gov.cn.jnkng.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.dhckp.cn.gov.cn.dhckp.cn http://www.morning.smszt.com.gov.cn.smszt.com http://www.morning.kbntl.cn.gov.cn.kbntl.cn http://www.morning.bxrqf.cn.gov.cn.bxrqf.cn http://www.morning.kpgms.cn.gov.cn.kpgms.cn http://www.morning.brscd.cn.gov.cn.brscd.cn http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com http://www.morning.btblm.cn.gov.cn.btblm.cn http://www.morning.qinhuangdjy.cn.gov.cn.qinhuangdjy.cn http://www.morning.bssjz.cn.gov.cn.bssjz.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn http://www.morning.zbmcz.cn.gov.cn.zbmcz.cn http://www.morning.drtgt.cn.gov.cn.drtgt.cn http://www.morning.mpwgs.cn.gov.cn.mpwgs.cn