You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python从Soup中提取特定标签?

如何使用Python从Soup中提取特定标签?

嘿,我来帮你搞定从USDA那些页面提取数据的需求!用BeautifulSoup来做这件事超顺手,我给你一步步拆解操作方法:

首先得准备好工具,你需要先安装requestsbeautifulsoup4这两个Python库,如果还没装,直接在终端跑这条命令:

pip install requests beautifulsoup4

接下来是核心的代码实现,先把网页内容拉下来再解析,我结合你给的两个目标页面写了个基础框架:

import requests
from bs4 import BeautifulSoup

# 你要爬取的两个页面URL
target_urls = [
    "https://www.ams.usda.gov/services/enforcement/organic/settlements",
    "https://www.ams.usda.gov/services/enforcement/organic/settlements-2023"
]

for url in target_urls:
    # 发送请求获取页面HTML
    response = requests.get(url)
    # 先确认请求成功了再继续
    if response.status_code == 200:
        # 用BeautifulSoup解析HTML内容
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 接下来就是提取你要的特定数据——比如你提到的日期"03/19/2025"和商家名称
        # 这里得根据页面实际的HTML结构来定位,我给你举两个实用的思路:
        
        # 思路1:通过文本特征定位日期(比如匹配MM/DD/YYYY格式的文本)
        date_matches = soup.find_all(string=lambda t: t and "/" in t.strip() and len(t.strip()) == 10)
        for date_text in date_matches:
            clean_date = date_text.strip()
            # 再找对应的商家名称,比如找日期所在元素的父容器或相邻标签
            # 这里需要你自己打开页面右键检查元素,调整标签定位逻辑
            merchant_elem = date_text.find_parent().find_next_sibling("p")
            if merchant_elem:
                clean_merchant = merchant_elem.text.strip()
                print(f"提取到:日期={clean_date},商家={clean_merchant}")
        
        # 思路2:如果数据在表格里,直接定位<table>标签遍历行和列(更高效)
        settlement_tables = soup.find_all('table')
        for table in settlement_tables:
            # 跳过表头行,从第二行开始遍历数据
            for row in table.find_all('tr')[1:]:
                cols = row.find_all('td')
                if len(cols) >= 2:
                    table_date = cols[0].text.strip()
                    table_merchant = cols[1].text.strip()
                    print(f"表格提取:日期={table_date},商家={table_merchant}")
    else:
        print(f"请求页面{url}失败,状态码:{response.status_code}")

这里要提醒你:实际页面的HTML结构可能和我假设的不一样,一定要自己打开目标页面,右键选择「检查」查看元素,确认日期、商家名称这些数据所在的标签有没有特定的class、id,或者嵌套关系——比如如果日期在带有class="settlement-date"<td>标签里,那直接用soup.find_all('td', class_='settlement-date')定位会更精准。

如果遇到页面内容是动态加载的(比如需要滚动或点击才显示),那可能需要用selenium模拟浏览器操作,但看这两个USDA的页面,应该都是静态内容,用requests+BeautifulSoup完全能搞定。

核心步骤其实就这几点:

  • 发送HTTP请求获取页面HTML内容
  • 用BeautifulSoup把HTML解析成可操作的对象
  • 通过标签名、类名、文本特征等定位目标元素
  • 提取元素的文本内容或属性值

备注:内容来源于stack exchange,提问作者Anjali Kushwaha

火山引擎 最新活动