Python爬虫JSON网址selenium实战笔记

仅供学习参考

一、获取特定文本和json链接

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 指定 Chrome 驱动程序路径
chrome_driver_path = r'F:\chrome-win64\chromedriver.exe'# 创建 Chrome 浏览器的 WebDriver 实例
driver = webdriver.Chrome(executable_path=chrome_driver_path)# 访问网页
url = "动态网页网址链接"
driver.get(url)# 等待页面加载完成
driver.implicitly_wait(3)# 使用显示等待,等待姓名元素出现
wait = WebDriverWait(driver, 10)  # 最长等待时间为10秒for i in range(1, 100):name_xpath = f"/html/body/div[5]/ul[1]/li[{i}]/p/a"# 等待姓名元素出现name_element = wait.until(EC.visibility_of_element_located((By.XPATH, name_xpath)))name = name_element.textlink = name_element.get_attribute("href")print(f"姓名: {name}, 链接: {link}")# 关闭浏览器
driver.quit()
结果:现TXT文本内容姓名:abc,链接:http://abc.json

二、打开现TXT文本,将姓名保留,把获得的新链接放入姓名之后,以新的文本输出

import os
import time
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 设置 ChromeDriver 路径
chrome_driver_path = 'F:\chrome-win64\chromedriver.exe'# 创建 Chrome WebDriver 选项
options = Options()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")# 创建 Chrome WebDriver 对象
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=options)# 读取包含多个网址的TXT文件
with open('网址.txt', 'r', encoding='utf-8') as file:content = file.read()# 使用正则表达式提取姓名和网址
pattern = r'姓名: (.*?)\s+链接: (.*?)\n'
matches = re.findall(pattern, content, re.DOTALL)# 创建新的TXT文件
output_file_path = '个人网址.txt'
if not os.path.exists(output_file_path):open(output_file_path, 'w').close()# 打开新的TXT文件进行写入
with open(output_file_path, 'w', encoding='utf-8') as output_file:# 遍历每个匹配项for match in matches:name = match[0]url = match[1]try:driver.get(url)# 等待2秒time.sleep(2)# 使用 Selenium 获取动态生成的内容try:email_element = driver.find_element_by_id('需要填充') #根据目标网站修改email = email_element.text  #根据目标网站修改except:# 使用正则表达式查找邮箱地址email_pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'  #通用email_matches = re.findall(email_pattern, driver.page_source)if email_matches:email = email_matches[0]else:email = "无法提取邮箱地址"# 写入姓名和邮箱地址到文件output_file.write(f'{name}: {email}\n')except Exception as e:print(f"打开链接失败: {e}")# 关闭浏览器
driver.quit()
结果:现TXT个人网址文本内容abc: abc@qq.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java vs JavaScript: 了解关键区别

1. 语法和结构: Java: Java 是一种静态类型语言,这意味着在定义变量时需要声明每个变量的数据类型。在 Java 中,一个简单的 “Hello, World!” 程序如下所示: public class HelloWorld {public static void main(String[] args) {System.out…

OpenAI全新发布的Sora,到底意味着什么?

16日凌晨,OpenAI发布了文本视频的工具(text-do-video)Sora,整个世界再次被震撼。 Sora的出现,到底意味着什么? 目录 Sora的背景与概述Sora是什么?能为我们做些什么?存在的一些问题 文…

字节8年经验之谈 —— 详解python自动化单元测试!

1. 前言 说实话,除了测试要求,我实在不知道写单元测试有什么意义,一个函数50行代码,有多种参数组合,为了测试这些条件,需要编写测试用例,写完的测试用例比需要测试的函数还长。也就是说&#x…

可观测集合 ObservableCollection<T>、BindingList<T>

引言 WPF中经常使用的是集合类型,数据条目经常按集合类型进行保存收纳,当我们向用户公开一些命令:添加、删除或刷新整个列表,如何通知界面进行准确的刷新呢?这时我们就需要使用可被观测的集合 ObservableCollection<T>、BindingList 1、ObservableCollection<T…

257.【华为OD机试真题】幼儿园篮球游戏(贪心算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

14-树-二叉树的最小深度

这是树的第14篇算法&#xff0c;力扣链接。 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出…

ubuntu18.04运行DynaSLAM,实例分割+多视图几何+背景修复

博主电脑上之前就安装了ORB-SLAM2所需的环境&#xff0c;所以baseline为ORB-SLAM2的算法几乎都是直接./build.sh即可。需要我们安装的内容就是python的环境&#xff0c;Pytorch或者TensorFlow&#xff0c;以及下载预训练模型和数据集。 一、安装ORB-SLAM2所需的库 C11 or C0x…

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

【C语言】(26)预定义符号

核心预定义符号 __FILE__&#xff1a;字符串类型&#xff0c;表示当前源代码文件的名称。__LINE__&#xff1a;整型&#xff0c;表示当前源代码的行号。__DATE__&#xff1a;字符串类型&#xff0c;表示源文件被编译的日期&#xff0c;格式为 "MMM DD YYYY"。__TIME…

sqlserver union 和union all

在 SQL Server 中&#xff0c;UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。 UNION: UNION 操作符用于合并两个或多个 SELECT 查询的结果&#xff0c;并去除重复的行。如果两个查询的结果集中有相同的行&#xff0c;则只会返回一个。语法如下&#xff1…

数据结构-邻接矩阵

介绍 邻接矩阵&#xff0c;是表示图的一种常见方式&#xff0c;具体表现为一个记录了各顶点连接情况的呈正方形的矩阵。 假设一共有以下顶点&#xff0c;其连接关系如图所示 那么&#xff0c;怎么表示它们之间的连接关系呢&#xff1f; 我们发现&#xff0c;各条边所连接的都…

你知道专业4S店神秘顾客是如何砍价的吗?

在汽车市场中&#xff0c;神秘顾客调研已经成为评估销售服务质量和客户体验的重要手段。通过神秘顾客的实地探访&#xff0c;品牌方和销售商可以获取真实、客观的反馈意见&#xff0c;从而针对性地改进服务。另外神秘顾客在执行过程中还可以通过砍价的方式了解该门店是否出现价…

C语言题目:一些简单的编程和递归题目

以下的题目的较难的点都在注释里面讲解清楚了 一. 1.喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff08;编程实现&#xff09;。 代码实现&#xff1a; int main() {int money 20;int price 1;int e…

C#,二进制数的非0位数统计(Bits Count)的算法与源代码

计算一个十进制数的二进制表示有多少位1&#xff1f; 1 遍历法&#xff08;递归或非递归&#xff09; 使用循环按位统计1的个数。 2 哈希查表法 利用一个数组或哈希生成一张表&#xff0c;存储不同二进制编码对应的值为1的二进制位数&#xff0c;那么在使用时&#xff0c;只…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(五)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

华为OD机试真题- 攀登者2-2024年OD统一考试(C卷)

题目描述: 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素0代表地面。例如[0,1,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5和8,9,1…

「优选算法刷题」:判定字符是否唯一

一、题目 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc" 输出: true限制&#xff1a; 0 < len(s) < 100 s[i]仅包含小写字母 二…

控制程序执行流程

资源 资源下载 【免费】突破密码认证程序&#xff08;修改函数返回地址&#xff09;资源-CSDN文库 资源内容 源码 在上一篇文章里 修改函数返回地址-CSDN博客 流程 对程序进行编译 思路 了解栈的情况&#xff08;函数地址、缓冲区偏移量&#xff09;程序中密码认证的地…

SHERlocked93 的 2023 年终总结

工作之后感觉一年一年过的太快&#xff0c;没有个记录连回忆都无从回忆起&#xff0c;之前的年终总结&#xff1a; SHERlocked93 的 2022 年终总结SHERlocked93 的 2021 年终总结SHERlocked93 的 2020 年终总结SHERlocked93 的 2019 年终总结SHERlocked93 的 2018 年终总结SHER…

js设计模式:发布订阅模式

作用: 也称之为消息队列模式,或者pubsub模式 发布者发布消息(也可以理解为调用某函数),订阅者会收到消息,并且发布者可以将一些参数传递给订阅者。 是一种常用的参数传递方法,经典的pubsub.js,vue2中的$bus等都是用的这种模式。 示例: <!DOCTYPE html> <html lan…