Python爬虫html网址实战笔记

news/2025/3/14 18:05:58/

仅供学习参考

一、获取文本和链接

import requests
from lxml import htmlbase_url = "https://abcdef自己的网址要改"
response = requests.get(base_url)
response.encoding = 'utf-8'  # 指定正确的编码方式tree = html.fromstring(response.content, parser=html.HTMLParser(encoding='utf-8'))# 固定部分XPath,只有最后一个div的索引会变化,自己修改,复制网址的xpath路径
fixed_xpath = "/html/body/div[4]/div[2]/ul/li[{div_index}]/a"filename = "现TXT文本内容.txt"with open(filename, "w", encoding="utf-8") as f:for div_index in range(1, 100):  # 假设有100个人# 构建完整的XPathxpath = fixed_xpath.format(div_index=div_index)# 使用XPath定位每个人员信息的元素person_elements = tree.xpath(xpath)for person_element in person_elements:# 获取网址路径和姓名信息url_path = person_element.get("href")full_url = base_url + url_path if url_path else ""name = person_element.xpath('string()').strip()  # 提取文本内容并去除空格# 仅输出网址中的路径部分url_path = full_url.replace(base_url, "")output_str = f"网址路径:{url_path}\n姓名:{name}\n\n"print(output_str)f.write(output_str)print(f"输出已保存到文件 {filename}")
结果:现TXT文本内容网址路径:http://abc.html
姓名:abc

二、根据现有的TXT文本,打开链接找到需要的内容

import re
import requests
from lxml import html# 读取文件内容
with open("现TXT文本内容.txt", "rb") as file:content = file.read().decode('utf-8', 'ignore')lines = content.splitlines()email_xpath = '/html/body/div[4]/div/div/div/div/div[2]/div[1]/div[2]/div[4]/div[1]/text()'filename = "现TXT文本内容邮箱.txt"with open(filename, "w", encoding="utf-8") as f:for i in range(0, len(lines), 1):url_line = lines[i]name_line = lines[i + 1]url_match = re.search(r"https?://[^\s]+", url_line)name_match = re.search(r"姓名:(.+)", name_line)if url_match and name_match:url = url_match.group()name = name_match.group(1)response = requests.get(url)tree = html.fromstring(response.content)email = tree.xpath(email_xpath)email = email[0] if email else "未找到邮箱地址"output_str = f"{name}:{email}\n"print(output_str)f.write(output_str)print(f"输出已保存到文件 {filename}")
输出TXT文本内容
abc:abc@aa.com
...
...

http://www.ppmy.cn/news/1354297.html

相关文章

HTTP 响应状态代码

HTTP 响应状态代码 HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。 响应分为五类: 信息性回复 ( 100 – 199​)成功响应 ( 200 – 299​)重定向消息 ( 300 – 399​)客户端错误响应 ( 400 – 499​)服务器错误…

【DDD】学习笔记-培训领域模型的聚合设计案例

聚合是领域驱动战术设计最为核心的概念,若能合理运用,就能极大地改善领域设计模型的质量。只有设计出高质量的聚合,才能充分利用聚合边界的控制力,达成领域逻辑与技术实现之间的平衡。下面,我将针对培训管理系统&#…

Xilinx FPGA——在线升级

同以前单片机在线升级的做法一样,本质就是通信Flash操作跳转。 一、通信驱动 我使用的是UDP有线传输, 二、Flash芯片驱动 规划Flash芯片的区域,一般bootloader放在起始位置,APP放在bootloader之后的空白区域。 2.1 Flash擦除 我…

shell脚本之高级变量

目录 一、高级变量赋值 1、高级变量赋值总结表 2、相关操作 二、变量间接引用 1、eval命令 一、高级变量赋值 1、高级变量赋值总结表 变量配置方式str 无配置str 为空字符串str 已配置为非空字符串var${str-expr}varexprvarvar$strvar${str:-expr}varexprvarexprvar$str…

ABC341A-D题解

文章目录 A题目AC Code: B题目AC Code: C题目AC Code: D题目你以为这就完了? 时间复杂度分析:AC Code: E A 题目 这个没什么好说的,就先输出一个 1,再输出 n n n 个 01就大功告成…

2024.2.15 模拟实现 RabbitMQ —— 消息持久化

目录 引言 约定存储方式 消息序列化 重点理解 针对 MessageFileManager 单元测试 小结 统一硬盘操作​​​​​​​ 引言 问题: 关于 Message(消息)为啥在硬盘上存储? 回答: 消息操作并不涉及到复杂的增删查改消…

【复现】某公司指挥调度管理平台 RCE漏洞_51

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任务等。用户可以通过该平台发送指令…

应对DDoS攻击:快速恢复网站正常运行的关键步骤

当网站遭受DDoS(分布式拒绝服务)攻击时,可能会导致网站停机、性能下降和用户无法访问等问题,处理DDoS攻击需要采取一系列措施来应对和缓解攻击。 您的网站可能是今天的目标,因为面对DDoS(分布式拒绝服务&am…