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

Python爬取含Tesla的谷歌新闻链接无输出问题:原因及修复方案

谷歌新闻Tesla链接爬取无输出:问题诊断与修复方案

我来帮你排查这个问题——你的代码逻辑里有几个关键的小问题,导致完全没输出,咱们一步步拆解:

核心问题分析

  • 关键词判断逻辑错误
    谷歌新闻里的新闻文章链接格式是./articles/XXX这种相对路径,里面根本不会包含"tesla"关键词!你写的if word in link['href']相当于在找带tesla的链接路径,这完全不符合实际的链接结构,所以自然不会命中任何结果。
  • 未处理反爬机制
    直接用httplib2发请求,谷歌很可能识别出这是非浏览器请求,返回的内容可能不是你在浏览器里看到的搜索结果页面,甚至是空内容,导致BeautifulSoup根本找不到有效链接。
  • 未筛选有效链接
    页面里的<a>标签很多是导航栏、分页、菜单链接,不是新闻文章链接,需要精准筛选。

修复后的代码

import httplib2
from bs4 import BeautifulSoup, SoupStrainer

# 模拟浏览器请求头,避免被反爬拦截
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'
}

http = httplib2.Http()
# 携带请求头发起页面请求
status, response = http.request(
    'https://news.google.com/search?q=tesla&hl=en-US&gl=US&ceid=US%3Aen',
    headers=headers
)

# 只解析带href属性的a标签,同时筛选新闻文章链接
for link in BeautifulSoup(response, "lxml", parse_only=SoupStrainer('a', href=True)):
    href = link['href']
    # 通过路径特征识别新闻文章链接,排除导航类无效链接
    if href.startswith('./articles/'):
        # 将相对路径转换为可直接访问的绝对URL
        full_link = f"https://news.google.com{href[1:]}"
        print(full_link)

修复要点说明

  • 修正判断逻辑:不再检查href里的关键词,而是通过谷歌新闻稳定的链接路径特征./articles/来识别新闻文章链接,这是更可靠的筛选方式。
  • 添加请求头:模拟浏览器的User-Agent,避免被谷歌的反爬机制拦截,确保能获取到正常的搜索结果页面。
  • 转换绝对路径:把页面内的相对路径转换成完整的绝对URL,方便后续直接访问或存储。

补充提醒:谷歌的页面结构可能会不定期更新,如果之后这个选择器失效,你可以打开浏览器开发者工具,重新查看新闻链接的HTML特征(比如特定的class属性),再调整筛选条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:04