Python爬虫JSON网址selenium实战笔记

news/2024/7/19 9:11:41 标签: python, 爬虫, json

仅供学习参考

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

python">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.text
    link = name_element.get_attribute("href")
    print(f"姓名: {name}, 链接: {link}")

# 关闭浏览器
driver.quit()

结果:现TXT文本内容

姓名:abc,链接:http://abc.json

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

python">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.niftyadmin.cn/n/5379086.html

相关文章

AcWing 787. 归并排序

Problem: AcWing 787. 归并排序 文章目录 思路解题方法复杂度Code 思路 归并排序是一种分治算法。首先将数组分为两半,然后对每一半进行排序,最后将两个已排序的部分合并在一起。这个过程会递归地应用到每一半。 解题方法 如果数组只有一个元素&#xf…

迷失在前端框架中的初级开发者,总觉得大厦要从二层开始建

知乎有人提问:现在是框架主导前端时代,还有必要学习Html,CSS和JavaScript吗?我看很愕然,框架可以节省力气,难道都可以替代前端基础了吗? 一、起因 因为贝格前端工场的主营业务就是前端开发&…

【JavaScript】localStorage 和 sessionStorage

文章目录 1. localStorage和sessionStorage的概念localStoragesessionStorage 2. localStorage和sessionStorage的使用设置数据读取数据删除数据清空所有数据 3. localStorage和sessionStorage的应用场景localStoragesessionStorage 4. 安全性注意事项5. 总结 在前端开发中&…

《UE5_C++多人TPS完整教程》学习笔记14 ——《P15 创建我们自己的子系统(Creating Our Own Subsystem)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P15 创建我们自己的子系统(Creating Our Own Subsystem)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

波奇学Linux:文件系统打开文件

从文件系统来看打开文件 计算机系统和磁盘交互的大小是4kb 物理内存的4kb,磁盘的4kb文件叫做页帧 磁盘数据块的以4kb为单位。 减少IO的次数,减少访问外设的次数--硬件 基于局部性的原理,预加载机制--软件 操作系统管理内存 操作系统对…

C++ STL->list模拟实现

theme: smartblue list list文档 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素…

【python】python入门(变量名)

Hi~ o(* ̄▽ ̄*)ブ今天一起来看看python入门之变量名吧~~ 变量名的规定: 举个例子: “违法”的变量名们 my love/my !love错误:中间不能是空格或者其他符号1my_love错误:不能数字开头"my_l…

嵌入式——Flash(W25Q64)

目录 一、初识W25Q64 1. 基本认识 2. 引脚介绍 ​编辑 二、W25Q64特性 1. SPI模式 2. 双输出SPI方式 三、状态寄存器 1. BUSY位 2. WEL位 3. BP2、BP1、 BP0位 4. TB位 5. 保留位 6. SRP位 四、常用操作指令 1. 写使能指令(06h) 2. 写禁…