使用pygooglenews爬取新闻时报'list'无strftime属性如何解决
错误原因
- 变量名冲突:你导入了
datetime.date类,后续又定义了同名列表date = []存储新闻发布时间,调用date.strftime时系统识别到的是列表对象,自然没有对应方法。 - 缺少日期循环逻辑:原有代码仅执行了一次搜索,没有遍历15天的所有日期,无法拿到完整的周期数据。
strftime调用对象错误:strftime是日期实例的方法,需要作用在你定义的start_date这类具体的日期对象上,不能直接作用在date类本身。
修复后完整代码
import datetime from datetime import date from pygooglenews import GoogleNews import pandas as pd gn = GoogleNews(lang = 'en', country = 'US') start_date = date(2021, 9, 1) end_date = date(2021,9,14) delta = datetime.timedelta(days=1) # 全局存储所有时段新闻数据 all_links = [] all_pub_dates = [] # 循环遍历起止日期内的每一天 current_date = start_date while current_date <= end_date: # 格式化符合接口要求的日期字符串 from_str = current_date.strftime('%Y-%m-%d') to_str = (current_date + delta).strftime('%Y-%m-%d') # 执行当日关键词搜索 search = gn.search('AAPL', from_=from_str, to_=to_str) # 追加当日数据到全局列表 for item in search['entries']: all_links.append(item.title) all_pub_dates.append(item.published) # 日期前进一天 current_date += delta # 导出结果到csv d = {"Headline": all_links, "Timestamp": all_pub_dates} df = pd.DataFrame(d) df.to_csv('/content/drive/MyDrive/google_news_Apple_1y.csv', index=False)
注意事项
- pygooglenews受谷歌新闻接口限制,单次请求最多返回100条结果,若单日相关新闻量超过100条,需要额外实现分页逻辑避免数据遗漏
- 网络不稳定时可以增加请求重试逻辑,避免单次请求失败丢失对应时段的数据
内容的提问来源于stack exchange,提问作者iuyi
相关产品推荐
相关产品推荐

