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

如何用Python从HTML代码中提取特定位置的目标列表元素?

网页数据提取实现方案(Python)

优先推荐:用BeautifulSoup直接解析HTML(不转字符串/正则)

正则处理HTML容错性极差,一旦页面结构有细微变化(比如换行、属性顺序调整)就会失效,而BeautifulSoup本身就是为HTML解析设计的,完全不需要把soup转成字符串处理。结合你的需求(目标列表位于某特定行之后),具体步骤如下:

  1. 定位标识行(蓝色括号包裹的行)
    这行的绿色文本是每个页面的唯一标识,你可以用正则匹配文本内容来定位对应的元素。代码示例:

    import requests
    import re
    from bs4 import BeautifulSoup
    
    # 现有请求代码不变
    resp = requests.get("https://statusinvest.com.br/fundos-imobiliarios/knri11", headers={'User-Agent': 'Mozilla/5.0'})
    soup = BeautifulSoup(resp.content, features="html.parser")
    
    # 定位包含绿色标识文本的元素(比如<h3>标签,根据实际页面结构调整)
    marker_element = soup.find('h3', text=re.compile(r'Ativos'))  # 替换成你看到的绿色文本关键词
    
  2. 提取后续的目标列表(粉色括号内的内容)
    找到标识元素后,通过兄弟节点/父节点定位到目标列表,再提取所有列表项:

    if marker_element:
        # 找到标识元素的下一个容器(根据实际HTML结构调整,比如<div>)
        list_container = marker_element.find_next_sibling('div')
        # 定位粉色括号内的<ul>列表
        target_ul = list_container.find('ul')
        # 提取所有列表项文本
        result_items = [li.get_text(strip=True) for li in target_ul.find_all('li')]
        # 输出结果
        for item in result_items:
            print(item)
    

备选:用正则提取(仅当结构完全固定时使用)

如果一定要用正则,需确保页面结构绝对稳定,步骤如下:

html_str = str(soup)
# 编写正则模式:匹配标识行(蓝色括号),然后捕获后续的粉色括号列表
# 注意:需根据实际HTML标签、属性调整正则内容
pattern = re.compile(r'<div class="marker-class">.*?绿色关键词.*?</div>\s*(<ul.*?</ul>)', re.DOTALL)
match_result = pattern.search(html_str)

if match_result:
    # 提取到列表的HTML片段后,建议再用BeautifulSoup解析提取文本
    list_soup = BeautifulSoup(match_result.group(1), 'html.parser')
    result_items = [li.get_text(strip=True) for li in list_soup.find_all('li')]
    print(result_items)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:50:31