python中的selenium

一、通过selenium模拟浏览器的抓取

1、下载与导入

a、可直接在终端中输入pip install -i Simple Index selenium即可

b、点击 File -> Settings -> 选择项目:python12中的Python解析器,再点击 + 按钮,输入selenium,选择指定的版本,最后点击安装包(I)即可。

注意:这里下载的selenium 4.0.0,不要下载高版本,怕出问题,与4.0.0一致即可。

新建python文件,导入selenium中的webdriver:

复制代码
from selenium from webdriver

下载webDriver

新版本的浏览器请使用此处地址:Chrome for Testing availability

下载对应浏览器的webDriver,例如:Chrome浏览器对应的webDriver

注意:一定要下载浏览器对应版本的webDriver,如果没有完全对应的,可以下载接近版本的webDriver。

将下载chromedriver_win32.zip解压,并将其内的chromedriver.exe复制到Python安装目录下的Scripts目录中。

基本使用

复制代码
from selenium import webdriver
​
# 使用Chrome谷歌的webDriver
driver = webdriver.Chrome()
# 模拟get请求抓取jd网站
driver.get("https://www.jd.com")

Firefox:

复制代码
driver = webdriver.Firefox()

Safari:

复制代码
driver = webdriver.Safari()

Edge:

复制代码
driver = webdriver.Edge()

元素查找

使用find_element方法查找元素。可以使用各种定位方式,例如通过ID、类名、标签名等。

方法 说明
find_element_by_name 通过ID查找元素
find_element_by_xpath 通过XPath查找元素
find_element_by_tag_name 通过标签名查找元素
find_element_by_class_name 通过类名查找元素
find_element_by_css_selector 通过CSS选择器查找元素

注意:多个元素的查找只需要将element改为elements即可。

复制代码
# 通过ID查找元素
element = driver.find_element_by_id("J_searchbg")
print(element.text)
# 通过标签名查找
element = driver.find_element_by_tag_name("input")
print(element.get_attribute("aria-label"))
# 通过css样式查找
elements = driver.find_element_by_class_name("button")
print(elements.get_attribute("aria-label"))

注意:element.text用于获取元素的文本内容;element.get_attribute()用于获取元素的属性值。

模拟用户操作

方法 说明
clear 清楚元素内容
send_keys("值") 模拟按键输入
click 单击元素,触发元素的点击事情
submit 提交表单

**案例演示:**如何模拟JD商城搜索指定商品信息

复制代码
import time
from selenium import webdriver
​
driver = webdriver.Chrome();
driver.get("https://search.jd.com/Search?keyword=手机")
​
# 获取输入框
val = driver.find_element_by_id("key")
# 清空输入框的条件
val.clear()
# 重新设置查询条件
val.send_keys("电脑")
# 获取查询按钮并触发点击事件
btn = val.parent.find_element_by_css_selector("button.button.cw-icon")
btn.click()
# 睡眠3秒
time.sleep(3)
# 滚动到页面底部
# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 睡眠3秒
# time.sleep(3)
# 循环获取网页中电脑的名称
names = driver.find_elements_by_css_selector("#J_goodsList > ul > li > div > div.p-name.p-name-type-2 > a > em")
for name in names:
    print("【电脑】--",name.text)

优化操作

无头模式:不打开浏览器

复制代码
import time
​
from selenium import webdriver
​
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.get("https://search.jd.com/Search?keyword=手机")

**案例演示:**模拟点击frame窗口中的按钮

复制代码
import time
​
from selenium import webdriver
​
driver = webdriver.Chrome()
driver.get("https://search.jd.com/Search?keyword=手机")
​
# 点击用户图标
user = driver.find_element_by_class_name("tab-ico")
user.click()
# 睡眠2秒
time.sleep(2)
# 先要获取弹开的子窗口frame
frame = driver.find_element_by_id("dialogIframe")
# 切换到子窗口
driver.switch_to.frame(frame)
# 在获取子窗口中的QQ登录按钮
driver.find_element_by_css_selector("a.pdl").click()
相关推荐
安冬的码畜日常5 小时前
【JUnit实战3_28】第十七章:用 JUnit 5 实测 SpringBoot 项目
spring boot·功能测试·测试工具·设计模式·单元测试·junit5
程序员三藏8 小时前
接口自动化测试框架搭建详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
卖个几把萌10 小时前
【02】JMeter登录保存cookie用于后面的接口
测试工具·jmeter
测试老哥10 小时前
Jmeter吞吐量控制器详解
自动化测试·软件测试·python·测试工具·jmeter·测试用例·压力测试
吗喽1号11 小时前
python-xmind转Excel
python·测试工具
卓码软件测评18 小时前
第三方软件测试机构:【“Bug预防”比“Bug发现”更有价值:如何建立缺陷根因分析与流转机制?】
功能测试·测试工具·单元测试·测试用例·压力测试·可用性测试
测试老哥1 天前
python+requests+excel 接口测试
自动化测试·软件测试·python·测试工具·测试用例·excel·接口测试
Run Freely9371 天前
web自动化测试_selenium_05_窗口截图、验证码处理
selenium·测试工具
Run Freely9371 天前
web自动化测试-Selenium04_iframe切换、窗口切换
selenium
B站计算机毕业设计之家1 天前
Python招聘数据分析可视化系统 Boss直聘数据 selenium爬虫 Flask框架 数据清洗(附源码)✅
爬虫·python·selenium·机器学习·数据分析·flask