GDELT每时每刻监控着每个国家的几乎每个角落的100多种语言的新闻媒体—印刷的、广播的和web形式的,识别人员、位置、组织、数量、主题、数据源、情绪、报价、图片和每秒都在推动全球社会的事件,GDELT为全球提供了一个自由开放的计算平台。
GDELT2.0每个15分钟提供全球事件数据。GDELT目前的事件库约有3.5亿条事件数据。这些事件从1979年1月1日开始一直到今日。GDELT第一项服务就是免费的数据下载。同时GDELT还在谷歌的BigQuery上提供了数据API,这样您可以使用谷歌的分析工具进行分析。GDELT的数据除了事件数据外,还提供了GKG数据,也就是全球知识图(Global Knowledge Graph)的数据。在国内您也可以到疙瘩汤(www.gdelt.cn)上下载数据。
时间数据的数据量比较大,本次只下载24年2月份export结尾的数据,并从数据中过滤中国和美国相关的数据,使用H Actor1CountryCode:参与者1国家信息的CAMEO码(3字母缩写)和 R 18 Actor2CountryCode列来过滤。文章最后会附上完整的下载和处理代码。
由于数据文件的名称比较有规律,采用0-24时,循环遍历每个小时的0、15、30和45分钟的数据文件:
if __name__ == "__main__":
start_date = datetime(2024, 2, 1)
end_date = datetime(2024, 2, 2)
dest_folder = "E:\\gdelt_event"
base_url = "http://data.gdeltproject.org/gdeltv2/"
delete_renamed = "Y" # 是否删除重命名后的原始CSV文件
delete_excel = "Y" # 是否删除筛选后的Excel文件
for single_date in generate_dates(start_date, end_date):
date_str = single_date.strftime("%Y%m%d")
for hour in range(0, 24):
for minute in ['00','15','30','45']:
filename = f"{date_str}{hour:02d}{minute}00.export.CSV.zip"
url = base_url + filename
download_filter_and_save(url, dest_folder, delete_renamed, delete_excel)
使用requests库来处理HTTP请求,并用zipfile库来解压下载的文件。请确保在运行此脚本之前已经安装了requests库,如果没有安装,可以通过运行pip install requests来安装。
import requests
import zipfile
import os
def download_and_extract(url, extract_to):
# 使用requests下载文件
response = requests.get(url)
if response.status_code == 200:
# 确保目标文件夹存在
os.makedirs(extract_to, exist_ok=True)
zip_path = os.path.join(extract_to, 'temp.zip')
# 写入下载