TIOBE编程排行榜作为衡量编程语言流行度的权威指标,每年都会吸引众多开发者和企业的关注。近日,TIOBE发布了2023年最新编程语言排行榜,展示了各种编程语言的市场份额和流行度。本文将介绍如何从TIOBE排行榜抓取数据,并将这些数据写入数据库的过程。
read_html函数是最简单的爬虫,可爬取静态网页表格数据,但只适合于爬取table 表格型数据,不是所有表格都可以用read_html爬取,有的网站表面上看起来是表格,但在网页源代码中不是table格式,而是list列表格式,这种表格就不适用read_html爬取。
下面先学习一下read_html() 函数的参数,在代码行中写入
import pandas as pd
df=pd.read_html()
在括号中使用Shift+Tab组合键调用代码提示功能,可以看到read_html都包含以下参数。
这里例举常用的一些参数。
下面我们使用代码实际爬取网页表格数据,比如下面的TIOBE编程排行榜排名数据。
https://www.tiobe.com/tiobe-index/
TIOBE编程排行榜排名
使用read_html爬取网页数据,返回的结果是DataFrame组成的list ,在最后加上一个索引[0]即可得到爬取的表格数据,爬取的数据如下。
import pandas as pd
df=pd.read_html('https://www.tiobe.com/tiobe-index/')[0]
df.head(10)
数据有冗余,我们筛选自己需要的数据字段,多余的数据字段进行剔除,如下选取第1列、第2列、第5列、第6列、第7列的数据字段。
df_select=df.iloc[:,[0,1,4,5,6,]]
df_select.head(10)
使用Python写一个脚本,用于将上面的数据字段批量的存储为.sql格式数据,如下为生成的.sql格式数据,借助特定的SQL软件可以打开。
sql = [] # 使用列表来保存所有的 SQL 语句
for i, r in df_select.iterrows():
columns = "`, `".join(r.index) # 获取所有列名,并用逗号和空格分隔它们
values = "`, `".join([f"'{r[col]}'" for col in r.index]) # 为每一列生成一个带单引号的值,并用逗号和空格分隔它们
sql_row = f"INSERT INTO `TIOBE` (`{columns}`) VALUES ({values}) ;" # 生成完整的 SQL 插入语句
sql.append(sql_row) # 将 SQL 插入语句添加到列表中
# 将所有的 SQL 语句保存到一个文件中,例如 "output.sql"
with open('output.sql', 'w') as f:
for s in sql:
f.write(s + '\n') # 在每个 SQL 语句后添加一个换行符
除此之外,还可以使用 f'' 函数批量生成SQL插入语句,这部分SQL语句是可以直接复制粘贴在SQL软件中实际运行的,更快捷地写插入SQL语句的代码,代码生成如下。
sql = ''
for i,r in df_select.iterrows():
r_sql = f"INSERT INTO `TIOBE` (`Dec 2023`,`Dec 2022`,`Programming Language.1`,`Ratings`,`Change.1`)\nVALUES('{r['Dec 2023']}','{r['Dec 2022']}','{r['Programming Language.1']}','{r['Ratings']}','{r['Change.1']}',)"
sql = sql + r_sql + ';' + '\n'
print(sql)
通过使用适当的工具和方法,从TIOBE排行榜抓取数据并将其写入数据库是一个相对简单的过程,通过定期更新数据库,您可以确保数据的实时性和准确性。希望本文对有需求的数据抓取和存储有所帮助,如果您有任何其他问题或需要进一步的帮助,可在评论区留言!
本文首发于公众号:大话数据分析,专注于数据分析的实践与分享,掌握Python、SQL、PowerBI、Excel等数据分析工具,擅长运用技术解决企业实际问题,欢迎一同探索数据的世界,解锁业务背后的秘密。