You need to enable JavaScript to run this app. Python中for循环存储各国GoogleNews到DataFrame仅保留最后结果怎么办
优惠活动
大模型
产品
解决方案
定价
更多

Python中for循环存储各国GoogleNews到DataFrame仅保留最后结果怎么办

代码问题定位与修复方案

运行后仅保留最后一个国家的新闻结果,核心是三处代码逻辑/兼容性问题,和网络请求本身无关:

  • 国家标记列赋值位置错误:原代码是先把当前国家的新闻数据追加到总表,再给整个总表新增Country列并赋值为当前循环的国家值。这会导致每轮循环都会把总表里之前所有国家行的Country值全部覆盖,等循环走到最后一个国家时,全表的国家标记都会变成最后一个国家的值,做国家维度筛选时就会误以为之前的国家数据全部丢失。
  • 依赖了pandas已废弃/移除的append()方法:高版本pandas已经下线DataFrame.append()接口,如果运行环境版本不兼容,会出现数据合并失效、仅保留最后一次结果的问题。
  • 变量名不匹配:前面定义的国家列表是countries,循环内写的是countries1,如果该变量没有提前正确赋值,会导致循环遍历对象不符合预期。

修复后的实现逻辑

  1. 每轮循环拿到当前国家的新闻数据后,先在当前国家对应的小DataFrame上新增Country标记列,再将标记好的小表合并到总表,彻底避免跨轮次的标记覆盖问题。
  2. 用pd.concat()替代老旧的append()方法合并数据,兼容所有pandas版本。
  3. 每次新建GoogleNews实例后调用clear()方法清空内置的历史结果缓存,避免不同国家的新闻结果串接。
  4. 统一变量名,确保循环遍历的是之前提取的完整国家列表。

修复后的完整可运行代码

import time
import pandas as pd
from tqdm.notebook import tqdm
from GoogleNews import GoogleNews
from newspaper import Article

# 复用已提取的国家列表,保证变量名一致
countries = df["Country"].unique().tolist()
total_news_df = pd.DataFrame()  # 初始化空的总结果表
# 替换为你自己的指定时间范围
Start_date = "01/01/2024"
End_date = "01/31/2024"

for country in tqdm(countries):
    # 每轮新建独立的GoogleNews实例,避免缓存串数据
    googlenews = GoogleNews(start=Start_date, end=End_date)
    googlenews.set_lang('en')
    googlenews.set_encode('utf-8')
    # 清空实例内置的历史结果缓存
    googlenews.clear()
    # 请求当前国家的匹配新闻
    googlenews.get_news(country)
    result = googlenews.result()
    
    # 跳过无结果的国家,避免空表合并报错
    if not result:
        continue
    # 将当前国家的结果转为小DataFrame
    country_news_df = pd.DataFrame(result)
    # 核心修复:给当前小表打国家标记,不直接操作总表
    country_news_df['Country'] = country
    
    # 用concat合并到总表,替代老旧的append方法
    total_news_df = pd.concat([total_news_df, country_news_df], ignore_index=True)
    
    # 加1秒延时,避免请求过于频繁被限流
    time.sleep(1)

# 查看最终合并结果
total_news_df.head()

代码优化说明

  • 增加空结果判断:如果某个国家在指定时间范围内没有返回匹配新闻,代码会直接跳过,不会因为空值合并导致后续逻辑报错。
  • 合并数据时设置ignore_index=True,会重新整理总表的索引,避免合并后索引重复混乱。
  • 增加固定请求延时,降低被GoogleNews反爬拦截的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 05:06:10