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

如何使用Python爬虫提取<span>的id值及同div下的<p>元素?

解决方案

问题分析

你的代码存在两个核心问题:一是全局抓取所有<a>和<p>,无法保证两者属于同一父容器的对应关系;二是未定义变量infoo,会直接触发运行报错。另外需要实现英文文本的中文翻译转换。

修正步骤

先安装翻译依赖(若需自动翻译):

pip install googletrans==4.0.0-rc1

使用以下修正后的代码:

import requests
from bs4 import BeautifulSoup
from googletrans import Translator

# 初始化翻译器
translator = Translator(service_urls=['translate.googleapis.com'])

# 请求页面并解析HTML
response = requests.get('https://www.osha.gov/laws-regs/regulations/standardnumber/1926/1926.451#1926.451(a)(6)')
soup = BeautifulSoup(response.text, 'html.parser')

# 定位所有目标段落的容器div
paragraph_boxes = soup.find_all('div', class_='paragraph paragraph--type--regulations-standard-number paragraph--view-mode--token')

# 写入结果到文件
with open('osha.txt', 'w', encoding='utf-8') as f:
    for box in paragraph_boxes:
        # 提取span的id值
        span_id = box.find('span').get('id')
        # 提取p标签文本并清理格式
        raw_text = box.find('p').get_text(strip=True).strip('"')
        # 翻译为中文
        cn_text = translator.translate(raw_text, dest='zh-CN').text
        
        # 按格式写入内容
        f.write(f"{span_id}\n")
        f.write(f"{cn_text}\n")
        f.write('-' * 50 + '\n')

代码说明

  • 直接定位每个标准段落的父容器,确保span和p属于同一模块,避免全局抓取的匹配错位问题。
  • 自动清理文本中的多余引号和空格,让输出更整洁。
  • 用utf-8编码写入文件,避免中文乱码。
  • 通过googletrans实现英文到中文的自动翻译,满足输出中文的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:40:22