写在前面: 我是「虐猫人薛定谔i」,一个不满足于现状,有梦想,有追求的00后
\quad
本博客主要记录和分享自己毕生所学的知识,欢迎关注,第一时间获取更新。
\quad
不忘初心,方得始终。
\quad

❤❤❤❤❤❤❤❤❤❤

文章目录

  • 思路分析
  • 代码
  • 结果
  • 总结

思路分析

今天,要爬取的是世界各国历年的GDP数据 O(∩_∩)O哈哈~

这个网站有1960年到2018年的GDP数据,要爬取的国家如下:

按国家/地区查询历年数据
亚洲
中国 香港 澳门 新加坡 日本 泰国 菲律宾 韩国 马来西亚 越南 印尼 柬埔寨 老挝 缅甸 巴基斯坦 斯里兰卡 尼泊尔 印度 马尔代夫 蒙古 孟加拉 约旦 巴勒斯坦 沙特阿拉伯 黎巴嫩 也门 叙利亚 哈萨克斯坦 土库曼斯坦 格鲁吉亚 阿富汗 塔吉克斯坦 不丹 以色列 东帝汶 阿曼 文莱 卡塔尔 阿塞拜疆 乌兹别克斯坦 科威特 伊拉克 伊朗 吉尔吉斯斯坦 阿联酋 巴林 亚美尼亚
欧洲
英国 德国 法国 比利时 意大利 西班牙 葡萄牙 瑞士 冰岛 奥地利 捷克 匈牙利 波兰 希腊 俄罗斯 土耳其 保加利亚 罗马尼亚 斯洛文尼亚 克罗地亚 圣马力诺 芬兰 列支敦士登 马耳他 荷兰 黑山 白俄罗斯 安道尔 拉脱维亚 挪威 卢森堡 马其顿 摩尔多瓦 立陶宛 法罗群岛 丹麦 马恩岛 阿尔巴尼亚 塞尔维亚 乌克兰 斯洛伐克 塞浦路斯 波黑 爱沙尼亚 爱尔兰 摩纳哥 瑞典
美洲
美国 加拿大 委内瑞拉 玻利维亚 波多黎各 尼加拉瓜 巴拉圭 智利 圣基茨和尼维斯 牙买加 乌拉圭 特克斯和凯科斯群岛 多米尼克 圭亚那 哥斯达黎加 圣文森特和格林纳丁斯 特立尼达和多巴哥 百慕大 伯利兹 格林纳达 格陵兰 海地 墨西哥 圣卢西亚 安提瓜和巴布达 洪都拉斯 多米尼加 秘鲁 苏里南 哥伦比亚 厄瓜多尔 库拉索 危地马拉 巴巴多斯 巴西 开曼群岛 萨尔瓦多 阿鲁巴 巴拿马 阿根廷 巴哈马 古巴
大洋洲
澳大利亚 新西兰 基里巴斯 法属波利尼西亚 关岛 北马里亚纳群岛 马绍尔群岛 斐济群岛 密克罗尼西亚联邦 瓦努阿图 美属萨摩亚 帕劳 萨摩亚 图瓦卢 汤加 巴布亚新几内亚 所罗门群岛 新喀里多尼亚 瑙鲁
非洲
南非 埃及 安哥拉 阿尔及利亚 尼日尔 纳米比亚 加纳 佛得角 利比里亚 毛里求斯 利比亚 坦桑尼亚 博茨瓦纳 布基纳法索 毛里塔尼亚 塞拉利昂 吉布提 几内亚 塞舌尔 刚果(金) 贝宁 尼日利亚 多哥 喀麦隆 摩洛哥 乍得 布隆迪 莱索托 莫桑比克 津巴布韦 刚果(布) 埃塞俄比亚 科摩罗 圣多美和普林西比 马达加斯加 塞内加尔 卢旺达 赞比亚 冈比亚 南苏丹 肯尼亚 突尼斯 科特迪瓦 赤道几内亚 几内亚比绍 斯威士兰 中非 索马里 厄立特里亚 加蓬 马拉维 马里 苏丹 乌干达

差不多世界上的国家都全了!

下面进行思路分析,废话不多说,直接上F12,可以发现数据在网页的源码中,这就好办了。

请求相应的页面,拿到源码后,从源码中提取数据就行了。

# 中国对应的URL
https://www.kylc.com/stats/global/yearly_per_country/g_gdp/chn.html

对于其它国家的数据,我们只需要构造对应的URL即可。

代码

import requests
import time
import csv
from lxml import etree# 起始URL
url = 'https://www.kylc.com/stats/global/yearly_per_country/g_gdp/chn.html'
# 伪装请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'
}# 保存数据
def save_data(data, name):header = ['year', 'GDP', 'rate']f = open('./result/GDP/'+name+'.csv', 'w', newline='')f_csv = csv.DictWriter(f, header)f_csv.writeheader()f_csv.writerows(data)f.close()# 解析数据
def parse_data(html, name):data_list = []tr_list = html.xpath('//div[@class="table-responsive"]/table/tbody/tr')for tr in tr_list:data = tr.xpath('./td/text()')if len(data) == 3:year = data[0]gdp = data[1]rate = data[2]item = {'year': year,'GDP': gdp,'rate': rate,}data_list.append(item)# print(item)save_data(data_list, name)def main():r = requests.get(url, headers=headers)r.encoding='utf-8'html = etree.HTML(r.text)parse_data(html, 'chn')print('chn is OK!')ul_list = html.xpath('//div[@class="col-md-3"]/div[last()]/div[@class="panel-body"]/ul')for ul in ul_list:li_list = ul.xpath('./li')for li in li_list:a = ''.join(li.xpath('./a/@href'))name = a.split('/')[-1].split('.')[0]if name != '':next_url = 'https://www.kylc.com' + aresponse = requests.get(next_url, headers=headers)next_html = etree.HTML(response.text)parse_data(next_html, name)print(name + ' is OK!')time.sleep(1)if __name__ == "__main__":main()

结果



总共爬到了209个国家的GDP数据,相应国家的数据已经保存到对应的CSV文件中了。

总结

这次爬取的主要难点在于数据的提取和CSV文件的存储上,其他的操作都是一些较为常规的操作。对于数据的可视化以及展示,等我有空后再做吧!

蒟蒻写博客不易,如果有误还请大佬们提出
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:虐猫人薛定谔i
博客地址:https://blog.csdn.net/Deep___Learning

爬取世界各国历年的GDP数据相关推荐

  1. 用python爬取高考网历年高考分数线将数据放入MySQL并绘制图表

    用python爬取高考网历年高考分数线 # 导入爬虫的库 import requests from lxml import etree # 导入画图库 from pyecharts.charts im ...

  2. 如何利用 C# 爬取带 Token 验证的网站数据?

    在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了. 它的大体思路如下: 对文档分词,找出文档中的情感词.否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前 ...

  3. PythonR爬取分析赶集网北京二手房数据(附详细代码)

    本文转载自数据森麟(ID:shujusenlin) 作者介绍:徐涛,19年应届毕业生,专注于珊瑚礁研究,喜欢用R各种清洗数据. 知乎:parkson 如何挑战百万年薪的人工智能! https://ed ...

  4. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  5. Crawler:基于requests库+urllib3库+伪装浏览器实现爬取抖音账号的信息数据

    Crawler:Python之Crawler爬取抖音账号的信息数据 目录 输出结果 代码设计 输出结果 更新-- 代码设计 from contextlib import closing import ...

  6. python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例

    本篇文章小编给大家分享一下python爬虫实现爬取同一个网站的多页数据代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.爬虫的目的 从网上获 ...

  7. 爬取两万多条租房数据,算算在广州你能「活到」第几集?

    作者 | zone7 责编 | 仲培艺 此前,笔者曾用 Python 爬取 1.7 万条租房数据,并据此撰文揭示了深圳房价飙升背后的生存压力.此番再析广州租房价格现状,在升级爬虫技术之余,也完善了更多 ...

  8. ajax将数据显示在class为content的标签中_python爬取微博评论(无重复数据)

    python爬取微博评论(无重复数据) 前言 一.整体思路 二.获取微博地址 1.获取ajax地址2.解析页面中的微博地址3.获取指定用户微博地址 三.获取主评论 四.获取子评论 1.解析子评论2.获 ...

  9. 手把手教你爬取任意日期全部股票分时数据~

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 独怜幽草涧边生,上有黄鹂深树鸣. ...

  10. 第4章【思考与练习2】数据文件high-speed rail.csv存放着世界各国高速铁路的情况。对世界各国高铁的数据进行绘图分析。使用Basemap绘制地图及使用Pyecharts绘制地图。

    目录 P84思考与练习2 方法一:使用Basemap绘制地图 方法二:使用Pyecharts绘制地图 P84思考与练习2 1.叙述各类图形的特点.适合展示的数据特性,以及在数据探索阶段的用途. 函数绘 ...

最新文章

  1. 技术解析系列 PouchContainer Goroutine Leak 检测实践
  2. 5M1E,软件质量管理最佳解决方案
  3. php boolean 全大写还是全小写,【PHP培训】PHP为什么大小写规则是如此不规则?
  4. 第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 [计算机组成原理笔记]
  5. 程序员硬核吃瓜宋慧乔宋仲基离婚、范冰冰李晨分手!
  6. UVA10689 Yet another Number Sequence【数列+矩阵快速幂】
  7. xcap发包工具的简单使用3(报文描述)
  8. VMware 注册码
  9. 大数据推荐系统算法(1)大数据框架介绍
  10. fcm算法的MATLAB实现
  11. 掘金企服:ICP经营许可证和ICP备案的区别 1
  12. 微信小程序页面界面元素自适应
  13. 用python庆祝生日_雷吉娜用搞笑的歌曲庆祝自己50岁的生日:“今天一个婊子老了”...
  14. android手机8g内存够用嘛,手机内存选8G还是12G,行业老人告诉你,多数人都花冤枉钱了...
  15. 内连接(join、inner join )、左连接(left join) 、全连接(full join)
  16. Page Visibility(页面可见性) API介绍、微拓展
  17. 主成分分析和主成分回归
  18. Codeforces Contest 1144 E Median String —— 水题
  19. Zabbix的自动发现
  20. 在 ionic 项目中使用(迁移) capacitor

热门文章

  1. 手机 测试php代码大全,VIVO手机测试指令代码大全
  2. 计算机原理教程 pdf,《计算机组成原理》教程 概述.pdf
  3. C语言清屏函数和光标隐藏函数
  4. java 拦截器实现接口调用频率限制
  5. MacBookpro安装mysql教程_mac安装mysql的两种方法
  6. java selenium 登录_java+selenium实例已打开chrome 实现自动化登录页面账号密码 | 茶杯猫...
  7. Visual Studio 2012 激活码
  8. 视频教程-纯风老师AI平面设计视频教程-其他
  9. 有关cdsn论坛被封后如何解封
  10. 在C++Builder中使用OLE出现“类worksheet的paste方法无效”错误的一种解决方法