You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和BeautifulSoup提取HTML指定元素并生成目标格式内容

问题修正方案

原代码存在的问题

  1. 每次遍历<hr>时都会全局查找所有<li>,导致重复输出内容
  2. 直接输出整个<li>的文本,包含了不需要的Nation和Related Persons相关信息
  3. 输出格式不符合需求,存在多余的符号和换行

修正后的代码

from bs4 import BeautifulSoup
import requests
import linkMaker as linkMaker

url = linkMaker.link
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")

with open("test1.txt", "w") as file:
    # 遍历每个hr元素
    for hr in soup.find_all('hr'):
        # 获取hr后面紧邻的ul元素
        target_ul = hr.find_next_sibling('ul')
        if target_ul:
            # 处理当前ul下的每个li
            for li in target_ul.find_all('li'):
                # 提取标题并清理多余字符
                title = li.b.get_text(strip=True).rstrip(" - .")
                # 提取描述文本:定位到最后一个a标签后的内容
                last_link = li.find_all('a')[-1]
                description = last_link.next_sibling.next_sibling.get_text(strip=True).rstrip(".")
                # 按要求格式写入文件
                file.write(f"{title}\n{description}\n\n")

代码说明

  1. 精准定位元素:通过hr.find_next_sibling('ul')只处理当前<hr>对应的<ul>,避免全局查找导致的重复输出
  2. 提取标题:从<li>内的<b>标签获取标题,并通过rstrip(" - .")去除末尾多余的 - .符号
  3. 提取描述文本:定位到<li>内最后一个<a>标签,取其后续的文本节点作为描述内容,同时清理首尾空格和末尾多余的句号
  4. 格式输出:按照需求的换行格式写入文件,确保标题和描述各占一行,条目间空行分隔

内容的提问来源于stack exchange,提问作者qLu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:10:48