对代码进行了修改,从python2调整为python3,并对代码进行了优化。20210515

在上一篇博客谷歌GDELT数据说明中,我对GDELT数据进行了说明,在这篇文档中直接上代码,有需要的可以直接使用并下载数据,有问题欢迎留言。

GDELT提供了好几种数据,包括gkg、event、mentions等数据,我在代码中下载的是event数据,可以自己修改原始链接,代码应该可以通用,原理是一样的。

###需要注意,数据量较大,截止到2017.7.18全部下载下来需要150多GB,所以下载的时候最好下载到硬盘中,免得电脑内存不足。


# -*-coding:utf-8-*-
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import zipfile
import sys
import multiprocessing
import random
import ospath = os.path.split(os.path.abspath(__file__))[0] + os.sep  # 获取当前文件所在目录
data_folder = path + 'data' + os.sepdef get_url_list(url):'''获取页面下的所有url,保存到url_list.txt中,并返回url_list'''html = requests.get(url).textsoup = BeautifulSoup(html, 'lxml')url_list = []for li in soup.body.ul.find_all('li'):href = 'http://data.gdeltproject.org/events/' + li.a['href']url_list.append(href)print(len(url_list))with open(path + 'url_list.txt', 'w') as f:for url in url_list[3:-1]:  # 前三个url和最后一个不是我们需要的数据,故跳过f.write(url + '\n')return url_list[3:-1]def get_url_data(url):global data_folderif not os.path.exists(data_folder):os.mkdir(data_folder)  # 若文件夹不存在,则主动创建filename = url.split('/')[-1]  # 从url链接中获取文件名称filepath = data_folder + filenameif os.path.exists(filepath) or os.path.exists(filepath[:-4]):  # 若文件已下载,则跳过print('文件%s已存在' % filename)returnprint(filename)try:data = requests.get(url)with open(filepath, "wb") as f:f.write(data.content)fz = zipfile.ZipFile(filepath, 'r')fz.extract(fz.namelist()[0], data_folder) #解压下载下来的zip文件夹fz.close()if os.path.exists(filepath):os.remove(filepath)  # 删除zip文件夹,只保存解压后的数据except Exception as e:print(e)log = open(path + 'log.txt', 'a')log.write(url + '\n')def download():url = 'http://data.gdeltproject.org/events/index.html'print('获取文件链接', datetime.now())url_list = get_url_list(url)print('下载文件数据', datetime.now())pool = multiprocessing.Pool()  # 开启进程池,使用多进程提高下载速度pool.map(get_url_data, url_list)if __name__ == '__main__':download()

谷歌GDELT数据下载代码相关推荐

  1. 谷歌高程数据下载工具

    BIGEMAP在线帮助系统 如何下载高清卫星影像资料 如何获取高程/地形/等高线数据 在线标注 导入\导出 高清卫星影像 矢量等高线/高程 (点线面)标绘 测量数据完美套合卫星图像 卫星图像导入.导出 ...

  2. Google Earth Engine(GEE)批量下载代码(以 NDVI数据为例)

    下载数据先准备工作(具体细节都能查到):科学上网 谷歌邮箱,谷歌邮箱注册GEE账号. 一:导入需要下载边界shp文件. 标题 找到自己的shp文件,导入除了sbx文件的所有文件. 导入成功 命名ass ...

  3. python调用yolov3模型,pytorch版yolov3训练自己的数据(数据,代码,预训练模型下载链接)...

    1.数据预处理 准备图片数据(JPEGImages),标注文件(Annotations),以及划分好测试集训练集的索引号(ImageSets) 修改代码中voc_label.py文件中的路径以及类别, ...

  4. 实用工具|零代码实现高德地图POI数据下载

    1 工具获取方式 点击下面链接,即可获取地理坐标系转换工具 地理坐标系转换工具 2 工具介绍 高德地图POI数据下载工具(下文称该工具)是一款能够让用户在不写代码的前提下实现高德地图POI数据批量下载 ...

  5. 26 页高清大数据开发代码速查表,提升效率必备!【可下载】

    在各大互联网公司高价抢夺数据人才的环境下,为谋求长期发展.获得高薪,很多人转行到了大数据领域.这条路人才虽缺,但要成为优秀大数据工程师并不轻松:别的不说,光学习新技术,巩固旧知识,就需要耗费大量时间精 ...

  6. 谷歌地球如何下载使用高程数据

    BIGEMAP等高线(高程)使用教程 BIGEMAP高程数据主要特点: 覆盖全球 (任意范围下载) 精度准确 等高线细腻效果好 高程矢量数据可编辑 支持AutoCAD/南方CASS (DXF.DWG. ...

  7. tcga数据下载_零代码下载TCGA数据库第一期

    TCGA数据库目前是科研中最常用的数据库之一,其中储存着多种疾病的各组学的数据,借助该数据库,帮助了很多研究生们发表了自己的文章,达到了毕业条件.但是,如果你是刚入门的新手,不用担心,跟着我们的系列推 ...

  8. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  9. 谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复“谷歌BERT论文”下载彩标PDF论文)

    谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复"谷歌BERT论文"下载彩标PDF论文) 原创: 秦陇纪 数据简化DataSimp 今天 数据简化 ...

最新文章

  1. how Lordec maps the long reads to DeBruijn Graph
  2. 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解...
  3. logback日志记录器讲解
  4. python自动导出数据脚本_利用python生成一个导出数据库的bat脚本文件的方法
  5. c# 多线程界面卡顿_C#多线程解决界面卡死问题的完美解决方案
  6. 人才招聘中的“笔迹分析技术”
  7. 【pytorch】——报错 exporting the operator pixel_unshuffle to onnx opset version 11 is not supported
  8. iOS 第三方登录之 微信登录
  9. 支付业务与技术架构学习总结(7)——从金融牌照(三方支付牌照),看互联网巨头的金融布局
  10. 手机java update_手机里的java菜单老是自动更新为什么啊
  11. 开发微信小程序所需要的http服务器搭建
  12. 未来人工智能产品的思维,主要有哪几个趋势
  13. django集成Sphinx,为项目自动生成文档
  14. StarRocks Analyzer 源码解析
  15. 人文笔记(芒格人类误判心理学 + 韩信研究)
  16. JAVA采用S7通信协议访问西门子PLC
  17. SOTA 激光相机标定velo2cam_calibration(待完成)
  18. HanLP 自然语言处理 for nodejs
  19. python---表情包爬取
  20. 微信公众号网页底部不带返回栏 或者想要隐藏微信的底部导航栏

热门文章

  1. linux的shell脚本报错“syntax error near unexpected token `”的解决
  2. 解决win10笔记本电脑无法开启热点
  3. Selenium打开浏览器的方式总结
  4. 多变量分析方法与相关分析
  5. Zabbix6.0使用教程 (五)—zabbix从二进制包安装上篇
  6. linux 分区 dev,linux-kernel – 是/ dev / dm-1分区还是整个块设备?
  7. 运维工程师级别(初级、中级、高级)及待遇
  8. Excel在单元格输入内容,行自动添加边框
  9. 鼠标悬停“改变”图片
  10. 《写给大家看的Web设计书》读书笔记