如何使用Python Selenium编辑HTML?
爬取并修改特定HTML的自动化实现
核心工具选择
用Python配合requests(爬取页面)、BeautifulSoup(解析修改HTML)即可完成基础需求;如果目标网站是动态渲染页面,可改用Selenium或Playwright。
分步实现代码示例
- 爬取网页源码
import requests # 替换为目标网站URL target_url = "https://example.com" # 添加headers模拟浏览器请求,避免反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } response = requests.get(target_url, headers=headers) # 确保请求成功再处理后续逻辑 if response.status_code == 200: raw_html = response.text else: print(f"请求失败,状态码:{response.status_code}")
- 解析并修改指定HTML元素
针对你给出的示例(交换div内标题标签层级),用BeautifulSoup定位并修改:
from bs4 import BeautifulSoup soup = BeautifulSoup(raw_html, "html.parser") # 定位所有目标div(可根据实际情况添加class/id等筛选条件,提升精准度) all_divs = soup.find_all("div") for div in all_divs: # 处理含h5+h3的div h5_tag = div.find("h5") h3_tag = div.find("h3") if h5_tag and h3_tag: # 交换标签名称,实现层级调整 h5_tag.name, h3_tag.name = h3_tag.name, h5_tag.name # 处理含h3+h1的div(加判断避免重复修改) h3_tag_2 = div.find("h3") h1_tag = div.find("h1") if h3_tag_2 and h1_tag and not h5_tag: h3_tag_2.name, h1_tag.name = h1_tag.name, h3_tag_2.name # 生成格式化后的修改后HTML modified_html = soup.prettify()
- 保存修改后的内容
with open("修改后的页面.html", "w", encoding="utf-8") as file: file.write(modified_html)
动态页面处理补充
如果目标页面是JS动态加载的内容,改用Selenium获取完整渲染后的源码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 配置无头模式,不弹出浏览器窗口 chrome_options = Options() chrome_options.add_argument("--headless=new") driver = webdriver.Chrome(options=chrome_options) driver.get(target_url) # 可根据页面加载速度添加显式等待,确保内容加载完成 raw_html = driver.page_source driver.quit() # 后续解析修改步骤和上述一致
注意事项
- 严格遵守目标网站的
robots.txt协议,控制请求频率,避免触发反爬机制导致IP被封禁 - 定位元素时尽量使用精准的筛选条件(如id、class属性),避免泛泛查找导致误修改
内容的提问来源于stack exchange,提问作者MoonLight_one
相关产品推荐
相关产品推荐

