当前位置: 首页 > news >正文

python(爬虫selenium)

Selenium 是一款用于模拟浏览器行为的自动化测试工具,也是爬虫领域中处理动态渲染页面(如 JS 加载、Ajax 请求、登录验证等)的核心工具。

一、导入库

from selenium import webdriver from selenium.webdriver.edge.options import Options from selenium.webdriver.common.by import By import time # edge_options =Options() edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" # ##edge浏览器的地址 driver = webdriver.Edge(options=edge_options)

1.导入相关库的函数

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By

2.导入edge浏览器的内核

edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

二、核心操作浏览器与页面控制

1.基础操作

打开页面driver.get("https://www.example.com")访问目标 URL
刷新页面driver.refresh()刷新当前页面
前进 / 后退driver.forward()/driver.back()模拟浏览器前进 / 后退
窗口大小driver.set_window_size(1920, 1080)设置窗口尺寸
全屏driver.maximize_window()窗口最大化
关闭窗口driver.close()关闭当前标签页
退出浏览器driver.quit()关闭所有标签页并退出驱动(必写,否则进程残留)

2.页面元素定位

定位元素是 Selenium 操作的基础,优先使用唯一标识(id/name),其次用 XPath/CSS 选择器,避免用索引(易变)。

IDfind_element(By.ID, "id值")driver.find_element(By.ID, "username")元素有唯一 ID
Namefind_element(By.NAME, "name值")driver.find_element(By.NAME, "password")元素有 name 属性
Class Namefind_element(By.CLASS_NAME, "类名")driver.find_element(By.CLASS_NAME, "btn-submit")类名唯一
Tag Namefind_element(By.TAG_NAME, "标签名")driver.find_element(By.TAG_NAME, "input")标签唯一(如单个 input)
Link Textfind_element(By.LINK_TEXT, "链接文本")driver.find_element(By.LINK_TEXT, "登录")精准匹配超链接文本
Partial Link Textfind_element(By.PARTIAL_LINK_TEXT, "部分文本")driver.find_element(By.PARTIAL_LINK_TEXT, "登")模糊匹配超链接
XPathfind_element(By.XPATH, "XPath表达式")driver.find_element(By.XPATH, '//*[@id="username"]')复杂定位(万能)
CSS Selectorfind_element(By.CSS_SELECTOR, "CSS表达式")driver.find_element(By.CSS_SELECTOR, "#username")高效定位(推荐)

3.元素交互

# 1. 点击元素(按钮/链接/复选框) btn_elem = driver.find_element(By.CLASS_NAME, "submit-btn") btn_elem.click() # 2. 获取元素属性/文本 elem = driver.find_element(By.XPATH, '//div[@class="content"]') print(elem.text) # 获取元素可见文本 print(elem.get_attribute("href")) # 获取href属性 print(elem.get_attribute("innerHTML")) # 获取内部HTML # 3. 输入文本(先清空再输入) input_elem = driver.find_element(By.ID, "username") input_elem.clear() # 清空输入框 input_elem.send_keys("test123") # 输入内容

执行Javascript 代码,可以将页面滚动到底部。
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')

4.等待渲染

可以通过time函数用sleep方法等待

http://www.cnnetsun.cn/news/115269.html

相关文章:

  • 【参数辨识】基于卡尔曼滤波(KF)估计离散线性系统对垂直起降(VTOL)飞行器的鲁棒辨识附matlab代码
  • 桥梁与隧道安全守护者 抗冰冻型风速监测方案
  • 05-FreeRTOS的内存管理
  • 基于改进蛇优化算法(GOSO/ISO)优化随机森林数据回归预测模型(含初始化种群混沌映射、减法...
  • 基于大数据的人脸识别系统设计与实现开题报告
  • 车载 Android 系统稳定性问题全解析:从性能到黑屏的排查指南
  • 气象在线监测系统助力智慧环境管理,金叶仪器专业气象监测解决方案
  • 【TVM 教程】交叉编译与 RPC
  • 腾讯云国际站代理商的QAPM服务能提供哪些专属服务?
  • 网安副业怎么选?漏洞挖掘、技术博客、竞赛奖金实战,哪个更适配你?
  • 量子计算验证方法:软件测试从业者的转型指南
  • 突破 Oracle/MySQL 瓶颈:金仓数据库以三重革新,筑牢业务转型 “数据底座”
  • 【学习神器】NotebookLM“播客”功能实战指南:四六级、考研党高效复习秘籍
  • 如何解决 pip install 网络报错 ERROR: No matching distribution found for requests
  • 12 Ways to Find User Account Info and Login Details in Linux
  • 紧急警告:错误的导出格式正毁掉你的量子实验成果,速查正确方式
  • 35 岁职场焦虑蔓延?为什么网络安全行业越老越值钱?
  • 内网渗透实战干货:12 个优质靶场平台精选,附避坑指南 + 实操技巧合集!
  • 新型电力系统下多分布式电源接入配电网承载力评估方法研究附Matlab代码
  • 50天学习FPGA第16天-verilog的模块与端口
  • 50天学习FPGA第15天-verilog基本概念
  • 基于Docker容器化部署Lsky Pro私有图床系统
  • GRPO不香了?小米ICPO横空出世,专治大模型“不会思考”,推理能力飙升!
  • Windows找不到xenroll.dll文件 如何下载修复?
  • 软件测试文档标准化编写指南
  • Paperzz AI:毕业论文写作的 “隐形助攻”,让学术输出告别 “抓瞎”
  • BypassAV通过Patch白文件实现Bypass,没有添加其他免杀手法
  • 鸿蒙:一个操作系统的生态远征与多行业渗透之路
  • 游戏启动缺少X3DAudio1_3.dll文件问题 下载修复
  • java毕业设计之基于数据安全的旅游民宿租赁系统源代码(java+springboot+mysql)