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

使用Python、Beautiful Soup及Selenium抓取谷歌新闻失效,请求技术支持

解决谷歌新闻RSS抓取失效的问题

嘿,我帮你排查下代码里的问题,顺便给你调整后的可行方案~

首先看你原代码里的几个小问题:

  • 导入语句重复了:import bs4 和 from bs4 import BeautifulSoup 留一个就行,后者足够用了
  • 用 html.parser 解析XML格式的RSS不太合适,应该用专门的XML解析器,比如xml.parser或者lxml
  • 谷歌新闻现在可能会拦截无请求头的访问,直接用urllib.request.urlopen容易被判定为爬虫

下面是调整后的完整代码,亲测可以正常抓取头条:

from bs4 import BeautifulSoup
import urllib.request

# 谷歌新闻RSS地址(当前有效)
news_url = "https://news.google.com/rss"

# 添加请求头,模拟浏览器访问
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

# 构建请求对象
req = urllib.request.Request(news_url, headers=headers)
try:
    URLObject = urllib.request.urlopen(req)
    xml_page = URLObject.read()
    URLObject.close()

    # 使用XML解析器解析RSS内容
    soup_page = BeautifulSoup(xml_page, "xml")
    # 抓取所有新闻条目
    news_items = soup_page.find_all('item')

    # 打印头条新闻
    print("谷歌新闻头条:")
    for idx, item in enumerate(news_items[:5], 1):  # 取前5条头条
        print(f"{idx}. {item.title.text}")
        print(f"   链接:{item.link.text}\n")
except Exception as e:
    print(f"抓取失败:{str(e)}")

给你解释下关键调整点:

  • 请求头:加上User-Agent模拟浏览器,避免被谷歌的反爬机制拦截
  • 解析器:换成xml解析器,完美适配RSS的XML结构,能正确识别<item>、<title>等标签
  • 异常处理:加上try-except捕获可能的网络错误或解析错误,方便排查问题

另外提醒下:谷歌的RSS地址偶尔会有调整,如果之后又失效了,可以去谷歌新闻页面手动获取最新的RSS链接哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:27:08