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

如何用BeautifulSoup抓取指定div元素并合并内容至同一列?

问题解决与代码调整

核心问题修正与优化点

  • 原代码重复发起两次HTTP请求,浪费资源,保留一次带headers的请求即可
  • 抓取unformatted-text-box的逻辑有误:无需定位内部a标签,直接提取该div的文本内容即可;同时需先判断元素是否存在,避免触发异常
  • 新增对title和content的空值处理,防止页面结构变化导致脚本崩溃
  • 将抓取到的未格式化文本直接拼接进Content列,不再单独设列

修改后的完整代码

import requests
from bs4 import BeautifulSoup

# 示例headers,可根据实际情况调整
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

urls = [
    'https://www.studypool.com/discuss/18233577/obtain-a-copy-of-the-financial-statements-for-a-publicly-traded-company-then-complete-a-ratio-analysis',
    'https://www.studypool.com/discuss/18898929/financial-accounting-questions-multiple-choice-about-the-chapter-cash-amp-investments',
    'https://www.studypool.com/discuss/18237517/compare-forms-of-fundamental-and-technical-analyses'
]

def transform(url):
    # 仅发起一次HTTP请求
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 处理标题的空值情况
    title = soup.find('h1', {'class': 'question-title'})
    title_text = title.text.strip() if title else ''
    
    # 处理主内容的空值情况
    content = soup.find('div', {'class': 'user-generated-description'})
    content_text = content.text.strip() if content else ''
    
    # 正确抓取未格式化文本
    textbox = soup.find('div', {'class': 'unformatted-text-box'})
    textbox_text = textbox.text.strip() if textbox else ''
    
    # 合并内容:若存在未格式化文本,用换行分隔主内容与未格式化内容
    merged_content = f"{content_text}\n{textbox_text}" if textbox_text else content_text
    
    return {
        'Title': title_text,
        'Content': merged_content
    }

关键调整说明

  1. 请求优化:删除重复的requests.get调用,只保留带headers的单次请求,减少网络开销
  2. 元素抓取逻辑修正:
    • 对每个目标元素先判断是否存在,再提取文本,彻底避免AttributeError
    • 直接提取unformatted-text-box的文本内容,无需定位内部a标签(原页面结构中该div的文本即为目标内容)
  3. 内容合并:通过判断未格式化文本是否存在,决定是否拼接进主Content列,保证输出的CSV中Content列包含完整内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:55:23