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

求助:Python提取纽约时报文章作者姓名程序故障排查

问题排查:纽约时报文章作者提取失败的原因及修复方案

问题背景

你编写的Python程序需读取存储纽约时报文章链接的CSV文件,提取对应作者姓名后输出新CSV。使用bs4库开发,已确认作者姓名包含在css-1baulvz last-byline类的标签中,但运行后仅约3%的文章能成功提取作者,其余均返回Author not found。

问题根源分析

你的extract_author函数存在以下关键问题:

  1. 无请求头触发反爬机制
    纽约时报服务器会检测请求来源,直接用requests.get(url)发送的请求没有浏览器标识,会被判定为非合法请求,返回的页面可能是反爬页面、付费墙占位页,而非真实文章内容,自然找不到作者标签。

  2. 多类名匹配方式错误
    原代码中{'class': 'css-1baulvz last-byline'}是将两个类名作为完整字符串匹配,但HTML中标签的class属性是多个独立类,空格仅作分隔符。这种写法只有当class属性值完全等于该字符串时才会匹配成功,而实际页面中标签的class顺序或空格数量可能有差异,导致匹配失败。

  3. 缺乏异常处理
    请求过程中可能出现超时、连接错误等问题,直接返回Author not found会掩盖真实错误,也可能导致程序中途崩溃。

修复后的代码

import requests
from bs4 import BeautifulSoup

def extract_author(url):
    # 模拟浏览器请求头,避免反爬
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    }
    
    try:
        response = requests.get(url, headers=headers, timeout=10)
        # 确保请求成功
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 用CSS选择器匹配多类名标签,更可靠
        author = soup.select_one('span.css-1baulvz.last-byline')
        if author:
            return author.text.strip()
        
        # 备选:匹配可能的其他作者标签
        author = soup.select_one('a.css-n8ff4n.e1jsehar0')
        if author:
            return author.text.strip()
        
        # 兜底:从meta标签提取作者(部分文章可能在meta中)
        meta_author = soup.find('meta', attrs={'name': 'author'})
        if meta_author:
            return meta_author.get('content', '').strip()
        
    except Exception as e:
        print(f"处理URL {url} 时出错: {str(e)}")
    
    return 'Author not found'

关键修改说明

  • 添加请求头:通过User-Agent模拟浏览器请求,降低被反爬拦截的概率,确保获取真实的文章页面。
  • 改用CSS选择器:select_one('span.css-1baulvz.last-byline')可准确匹配同时包含这两个类的span标签,不受类名顺序和空格的影响。
  • 异常处理:捕获请求过程中的异常,打印错误信息便于排查,同时避免程序因单个链接问题中断。
  • 增加兜底提取方式:补充从meta标签提取作者的逻辑,覆盖更多页面结构的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:40:30