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

❤❤❤❤❤❤❤❤❤❤

文章目录

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

思路分析

最近,本人打算搞一个编程语言排名的可视化,需要数据,于是就从TIOBE上爬了一些数据。下面我来分享一下我的思路,思路仅供参考,可能有更好的方法,如果小伙伴们有好方法,可以在评论区留言哦。


本次爬取的目标:TIOBE


打开网站后,发现其中有一个图表做的挺好看,表上的数据也挺全,包括了从2002年一直到现在,一些主流的编程语言的排名数据。好了,今天就爬它了,淦!
首先,使用F12大法来分析一下网站,通过分析,我们可以发现这些数据就蕴藏在这个页面当中,那就好办了,直接爬这个页面,获取源码后,再提取想要的数据就行了。O(∩_∩)O哈哈~


再说一下,我遇到的坑吧!虽然,这次爬数据比较简单,但是在数据清洗上,我又走了不少弯路。ε=(´ο`*)))唉,我一开始想要用json库直接解析,可是爬到的数据不是规范的json格式,json库解析失败,于是,我又把数据规范了一下,可是,还是不行。┭┮﹏┭┮,在这个地方,我卡了好久。最后,我放弃了json解析,直接使用了正则表达式来清洗数据。

代码

import requests
import re
import os
import csv# 页面的URL
url = 'https://www.tiobe.com/tiobe-index/'# 伪装请求头
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}# 打开文件,保存数据
if not os.path.exists('./result/'):os.makedirs('./result/')
f = open('./result/tiobe.csv', 'w', newline='')
writer = csv.DictWriter(f, ['name', 'type', 'value', 'date'])
writer.writeheader()# 发送请求,获取数据
response = requests.get(url, headers=headers)
html = response.text
result = ''.join(re.findall(r'series: (.*?)\}\);', html, re.DOTALL))
result = re.findall(r'({.*?})', result, re.DOTALL)# 数据清洗,将数据整理成想要的格式
for item in result:name = ''.join(re.findall(r"{name : '(.*?)'", item, re.DOTALL))data = re.findall(r"\[Date.UTC(.*?)\]", item, re.DOTALL)for i in data:i = i.replace(' ', '')i = re.sub(r'[()]', '', i)value = i.split(',')[-1]time_list = i.split(',')[:3]time = ""for index, j in enumerate(time_list):if index !=0:if len(j) == 1:j = '0' + jif index == 0:time += jelse:time += '-' + jtemp = {'name': name,'type': name,'value': value,'date': time}print(temp)writer.writerow(temp)# 关闭文件
f.close()

结果



数据之所以要整理成这个样子,是因为那个可视化的模板需要这样的格式。

总结

通过这次数据的爬取,我发现自己在数据的清洗与转换上的操作还不是很熟练,以后要多加强这方面的练习。

爬取TIOBE的编程语言排行榜相关推荐

  1. python爬取网易云音乐排行榜数据

    python爬取网易云音乐排行榜歌曲及评论 网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录.iframe标签定位.页面元素提取. 在利用selenium定位元素并取值的过程中 ...

  2. 爬取百度指数行业排行榜

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

  3. 大数据Python爬取B站电影排行榜——爬取信息

    大数据Python爬取B站电影排行榜-信息爬取 前言 一.配置环境 二.爬取B站电影排行榜top100 1.找到B站电影排行榜top100网页 2.用URL进行爬取信息 三.建立Excel表并导出 总 ...

  4. python爬取酷狗音乐排行榜

    本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下 转载于:https://www.cnblogs.com/Pythonmiss/p/10799941.html

  5. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

  6. Scrapy的使用(1) -- 爬取b站新番排行榜

    Scrapy的使用(1) – 爬取b站新番排行榜 scrapy框架笔记(1),参考官方文档与部分教程,完成一个简单的爬虫程序,爬取了b站的2021年1月新番数据 1. 创建项目 在需要存储的代码目录下 ...

  7. PowerBI也能做爬虫:爬取豆瓣Top电影排行榜

    对于简单的页面数据爬取,其实使用PowerBI就可以可视化直接实现了,不需要另外写爬虫程序.本文以爬取豆瓣Top250电影排行榜示例说明下操作的基本过程. 一.分析URL规律及网页结构 打开豆瓣电影T ...

  8. 爬取音乐排行_TapTap排行榜数据大盘点

    为了了解国内热门手游的大概情况,发现热门手游的规律.本次使用Web Scraper爬取TapTap排行榜上相关榜单.将数据清洗.去重后导入Tableau进行数据统计.可视化. 数据摘要: 数据日期:2 ...

  9. python爬取网易云音乐排行榜歌单热评(完整版)

    完整版的爬取网易云音乐的排行榜单,和推荐榜单,热评 直接上代码,代码写的很清楚 为了防止被封我们先做个随机获取User_Agent """随机获取请求头"&qu ...

最新文章

  1. 干货 | VMAF视频质量评估在视频云转码中的应用
  2. 项目集跟进计划_项目延期,项目经理应该如何补救?
  3. vue 点击弹出文字_vue事件点击穿透解决大法,看这篇文章就够了
  4. 从喧闹与富有中搞懂搜索和拓扑
  5. 【版本更新】网易云信IM微信小程序上线啦!
  6. 怎样判断电饭锅温度传感器的好坏?_空调温度传感器的作用与检测。
  7. HTTP协议基本原理简介(二)
  8. python中转义符的用法_一篇文章搞懂python的转义字符及用法
  9. Mac m1芯片 安装 mosek python
  10. 神经网络处理器异构加速,神经网络处理器的特点
  11. 零基础入门STM32编程(一)
  12. 【免费】Discuz素材资源交易论坛整站源码/带数据整站源码打包
  13. 趣写算法之匈牙利算法
  14. 3个小球放入4个盒子
  15. 免费的播放器软件--mpv
  16. 如何将多个excel表格合并成一个_如何将两个pdf文件合并成一个
  17. js获取元素的方法及具体案例
  18. python Django 连接mysql数据库创建表详细全过程
  19. 计算机启动进入桌面非常慢,电脑开机加载桌面很慢的解决办法
  20. 省市县三级列表(jsp实现)

热门文章

  1. catia重心主惯量矩 m1_「CATIA V5教程」CATIA的公共工具栏有哪些?工具栏基本知识...
  2. the selection cannot be run on any server解决方法
  3. 解决、鼠标间歇性、自动断开、又重连(有图)
  4. 2013年8月28日、PS初步入门|and|Maven了解
  5. AMD黑苹果解决关机变重启、睡眠重启问题。
  6. Java 实现阿里云直播
  7. MyEclipse快捷键 用着就是爽啊
  8. 汇编中的lea指令的作用,简单清晰明了不废话!
  9. AI医药论文笔记DeepDDS: deep graph neural network with attention mechanism to predict synergistic drug....
  10. 【通信原理】信道编码——线性分组码