python bs4 selenium 查找a href=javascript:();的实际点击事件和url
在使用 BeautifulSoup 和 Selenium 时,处理 href="javascript:;" 的链接需要一些额外的步骤,因为这些链接不直接指向一个 URL,而是通过 JavaScript 代码来执行某些操作。这可能包括导航到另一个页面、触发模态窗口、显示/隐藏内容等。
以下是如何使用 Selenium 来查找和处理这些链接的步骤:
-
启动 WebDriver:首先,你需要启动一个 WebDriver(如 ChromeDriver)。
-
加载网页:使用 WebDriver 加载你想要抓取的网页。
-
查找链接:使用 Selenium 的方法查找所有
href="javascript:;"的链接。 -
获取和执行点击事件:虽然 Selenium 不直接提供获取 JavaScript 事件处理程序的方法,但你可以模拟点击这些链接,并观察网页的变化。这通常涉及到监听网络请求或使用浏览器的开发者工具来调试。
-
获取 URL:如果点击后页面导航到了新的 URL,你可以通过 WebDriver 的当前 URL 属性来获取新页面的 URL。
以下是一个示例代码,演示了如何使用 Selenium 来查找和处理这些链接:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time# 设置 Chrome 选项
chrome_options = Options()
chrome_options.add_argument("--headless") # 无头模式
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")# 启动 ChromeDriver
service = Service('/path/to/chromedriver') # 替换为你的 chromedriver 路径
driver = webdriver.Chrome(service=service, options=chrome_options)try:# 加载网页driver.get('https://example.com') # 替换为你要抓取的网页 URL# 等待页面加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))# 查找所有 href="javascript:;" 的链接links = driver.find_elements(By.CSS_SELECTOR, 'a[href="javascript:;"]')for link in links:print(f"Found link with text: {link.text}")# 执行点击事件前可以记录当前 URLcurrent_url = driver.current_urlprint(f"Current URL before click: {current_url}")# 模拟点击链接link.click()# 等待页面可能的导航或加载time.sleep(2) # 这里使用 sleep 作为简单的等待,实际中应该使用更智能的等待条件# 获取点击后的 URLnew_url = driver.current_urlprint(f"URL after click: {new_url}")# 如果需要,可以在这里添加更多的逻辑来处理点击后的页面内容# 重置到初始页面(如果需要)driver.refresh() # 或者使用 driver.get(current_url) 来重新加载原始页面finally:# 关闭 WebDriverdriver.quit()
注意:
- 上述代码中的
time.sleep(2)是一个简单的等待,用于等待页面可能的导航或加载。在实际应用中,你应该使用更智能的等待条件,如WebDriverWait。 - 如果点击链接后没有页面导航,而是触发了模态窗口或动态内容更新,你可能需要使用其他技术(如检查 DOM 变化、监听网络请求等)来捕获这些变化。
- 确保你有正确的
chromedriver路径,并且它与你的 Chrome 浏览器版本兼容。
相关文章:
python bs4 selenium 查找a href=javascript:();的实际点击事件和url
在使用 BeautifulSoup 和 Selenium 时,处理 href"javascript:;" 的链接需要一些额外的步骤,因为这些链接不直接指向一个 URL,而是通过 JavaScript 代码来执行某些操作。这可能包括导航到另一个页面、触发模态窗口、显示/隐藏内容等…...
三 BH1750 光感驱动调试1
一 扫描设备 查看手册 BH1750 光感模块 寄存器地址为 0x23 官方手册 : http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf su 然后用 i2cdetect 扫描设备: 拨,插 对比, 探测设备挂载在 /dev/i2c-5 上, 从设备地址为 0x23 二 …...
UE材质节点Fresnel
Fresnel节点 ExponentIn 控制边缘透明度 BaseReflectFractionIn 控制中心透明度...
linux的大内核锁与顺序锁
大内核锁 Linux大内核锁(Big Kernel Lock,BKL)是Linux内核中的一种锁机制,用于保护内核资源,以下是关于它的详细介绍: 概念与作用 大内核锁是一种全局的互斥锁,在同一时刻只允许一个进程访问…...
用户注册模块用户校验(头条项目-05)
1 用户注册后端逻辑 1.1 接收参数 username request.POST.get(username) password request.POST.get(password) phone request.POST.get(phone) 1.2 校验参数 前端校验过的后端也要校验,后端的校验和前端的校验是⼀致的 # 判断参数是否⻬全 # 判断⽤户名是否…...
面向对象的基本概念
本篇,来介绍面向对象的基本概念。 1 面向过程与面向对象 面向过程与面向对象,是两种不同的编程思想。 1.1 面向过程 面向过程的思路,是按照问题的解决步骤,将程序分解为一个个具体的函数或过程,然后依次调用这些函数来实现程序的功能。 面向对象的程序设计,程序的执行…...
深度学习每周学习总结R4(LSTM-实现糖尿病探索与预测)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客R6中的内容,为了便于自己整理总结起名为R4🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结1. LSTM介绍LSTM的基本组成部分如何理解与应用LSTM 2. 数据预处理3. 数…...
如何使用 PHP 操作亚马逊 S3 对象云存储
以下是使用PHP与亚马逊S3对象云存储(也有其他支持S3协议的云存储服务,原理类似)进行交互的常见文档接口使用示例,涵盖了基本的操作如上传文件、下载文件、删除文件、列举文件等内容。 ### 前提条件 1. 首先,你需要获取…...
26_Redis RDB持久化
从这个模块开始带领大家来学习Redis分布式缓存的相关内容,主要学习目标见下: 数据丢失问题:实现Redis数据持久化(RDB和AOF)并发能力问题:搭建Redis主从集群,实现读写分离故障恢复问题:利用Redis哨兵模式,实现健康检测和自动恢复存储能力问题:搭建Redis分片集群,利用…...
标准Android开发jdk和gradle和gradle AGP和AndroidStudio对应版本
还在为用什么gradle版本烦恼吗?编译不过IDE不开始下载第三方库吗?是时候匹配下你的gradle编译版本了: 1.Gradle 各版本支持的 JDK 版本范围如下: Gradle 版本最低支持 JDK最高支持 JDK7.0 - 7.6JDK 8JDK 178.0 - 8.2JDK 11JDK 1…...
太速科技-628-基于VU3P的双路100G光纤加速计算卡
基于VU3P的双路100G光纤加速计算卡 一、板卡概述 基于Xilinx UltraScale16 nm VU3P芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v3.0 x16智能加速计算卡,该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力…...
潜力巨大但道路曲折的量子计算
近一年来,由于工作的原因参观访问了一些量子产业园,接触了量子加密计算机、量子云计算等非常炫酷的概念性产品,这与自己一直认为的“量子技术仍然处于实验室研究阶段”的基本判断与认知产生了强烈的冲突,一刹那间,心中…...
LabVIEW驱动电机实现样品自动搜索
利用LabVIEW控制电机驱动相机在XY平面上进行扫描,以检测样品位置。样品最初可能位于相机视野范围之外,需要实现自动搜索样品位置并完成精确定位扫描的功能。该系统需具有以下特点: 高效搜索:能够快速确定样品位置,缩短…...
React Native Hooks开发指南
一、什么是Hooks Hooks 是 React 16.8 的新增特性。在不编写 class 的情况下使用 state 以及其他的 React 特性。Hooks 是一种在函数式组件中使用有状态函数的方法。 二、类组件 componentDidMount、componentDidUpdate 和 componentWillUnmount 这三个函数的组合。 三、常用…...
腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨
腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…...
ubuntu22.04 gcc,g++从10.5切换到低版本9.5
一、安装gcc-9.5 mkdir gcc cd gcc sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends gcc-9 | grep -v i386 | grep "^\w") sudo dpkg -i *.deb sudo…...
在 WSL 中使用 Jupyter Notebook 的 TensorBoard 启动问题与解决方法
在 WSL(Windows Subsystem for Linux)环境中,通过 Jupyter Notebook 使用 %tensorboard --logdir outputs有时会出现 “Timed out waiting for TensorBoard to start” 错误。常见原因通常是先前的 TensorBoard 进程尚未结束,占用…...
Spring Boot 2 学习全攻略
Spring Boot 2 学习资料 Spring Boot 2 学习资料 Spring Boot 2 学习资料 在当今快速发展的 Java 后端开发领域,Spring Boot 2 已然成为一股不可忽视的强大力量。它简化了 Spring 应用的初始搭建以及开发过程,让开发者能够更加专注于业务逻辑的实现&am…...
海豚调度DolphinScheduler-3.1.9配置windows本地开发环境
源代码下载地址https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9 1.Zookeeper安装与使用 如图下载解压zookeeper安装包,并创建data和log目录 下载地址 https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz 进入…...
【机器学习:十九、反向传播】
1. 计算图和导数 计算图的概念 计算图(Computation Graph)是一种有向无环图,用于表示数学表达式中的计算过程。每个节点表示一个操作或变量,每条边表示操作的依赖关系。通过计算图,可以轻松理解和实现反向传播。 计算…...
3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题
3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题 【免费下载链接】tool the USBToolBox tool 项目地址: https://gitcode.com/gh_mirrors/too/tool 在Hackintosh和跨平台开发领域,USB端口映射一直是个令人头疼的技术难题。US…...
2026年HR招聘偏好白皮书:这5项附加技能出现频率暴涨
2026 年的招聘市场,正在从“看你会什么岗位技能”,转向“看你能不能把岗位做得更智能”。HR筛简历时,越来越关注候选人的AI应用能力、数据化思维和业务落地能力。人社部近年发布的新职业中,已经出现生成式人工智能系统应用员、人工…...
论文创新点像挤牙膏?导师强推这几个AI论文平台
想写论文又快又好,关键是用对 AI 工具、走对流程——资深教授普遍推荐:千笔AI(中文全流程首选) 豆包学术版(轻量高效) DeepSeek 学术版(理工 / 长文本) Grammarly Academicÿ…...
【深度解析】AI Coding 模型竞速:从 Claude Mythos 安全编码到 GPT-5.6 传闻,如何落地代码审查智能体
摘要 AI 编码模型正在从“代码补全”进入“复杂代码库理解、漏洞发现与自动修复”阶段。本文结合 Claude Mythos、Claude Opus 4.8 与 GPT-5.6 相关信息,解析新一代 Coding Agent 的技术趋势,并给出基于大模型 API 的代码安全审查实战方案。背景介绍&…...
HDI 高密度互连板阶数的深度理解
一、概述高密度互连板(High Density Interconnector, HDI)是通过激光微孔技术和逐层积层工艺实现高密度布线的印制电路板。其阶数划分是行业内统一的技术标准,核心依据为独立积层压合次数与配套激光盲孔制程次数,而非单面层数或钻…...
百度文心一言开发者如何通过Taotoken低成本接入多模型API
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 百度文心一言开发者如何通过Taotoken低成本接入多模型API 对于已经熟悉并正在使用百度文心一言等国产大模型API的开发者而言&#…...
uWSGI目录穿越漏洞CVE-2018-7490深度利用与防御实战
1. 这不是“读文件”那么简单:uWSGI目录穿越在真实攻防链中的定位与误判代价你刚在Vulfocus靶场里跑通了CVE-2018-7490的PoC,用curl "http://target:8080/?p../../../../etc/passwd"成功读出了root:x:0:0:root:/root:/bin/bash,截…...
5A智慧景区建设|对标一流!巨有科技打造数智化标杆景区
5A级景区是中国旅游的最高标准,代表着服务与管理的顶尖水平。随着5A评审标准日益严苛,“智慧化”已成为核心硬性指标。然而,不少景区的智慧化建设陷入“重硬件、轻整合”的误区,系统林立、数据孤岛,投入巨大却效果不佳…...
LPCM框架:大模型驱动的计算机架构设计革命
1. LPCM框架:计算机系统架构设计的范式革命计算机系统架构设计正站在历史性的转折点上。过去八十年来,从ENIAC的真空管到现代7纳米制程的异构计算芯片,架构设计始终遵循着"专家经验EDA工具"的传统范式。但随着摩尔定律逼近物理极限…...
Noto字体终极指南:告别“豆腐块“,让全球文字清晰显示
Noto字体终极指南:告别"豆腐块",让全球文字清晰显示 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字世界中,你是否经常看到那些令人困…...
