数据库十年巅峰对决,谁才是真正的王者?
副标题[/!--empirenews.page--]
在年终岁尾之际,盘一盘大家比较关心的一些数据。今天先来看看各大数据库在过去一年的表现! 图片来自 Pexels 先来看看数据库流行度总体走势: 视频请查看这里 数据获取 所有的数据都来源自一个数据库流行趋势统计网站: https://db-engines.com/ Method 1 我们先来看获取数据方法,首先我们可以在下面地址中看到一个包含所有数据库信息的表格: https://db-engines.com/en/ranking 然后可以进入到每个数据库详情页面中,该数据库历年流行度数据都会在页面加载之后包含在 JavaScript 的变量中: https://db-engines.com/en/ranking_trend/system/Oracle 所以我们可以通过解析该 JavaScript 代码来获取每个数据库的历年数据,同时为了加快抓取速度,使用了异步请求。 先抓取所有数据库名称信息,通过 Pandas 的 read_html 方法可以方便的读取 HTML 中的 Table 数据: import pandas as pd
mystr = ' Detailed vendor-provided information available'
def set_column3(column3): if mystr in column3: column3 = column3.split(mystr)[0] return column3
url = 'https://db-engines.com/en/ranking' tb = pd.read_html(url) db_tb = tb[3].drop(index=[0, 1, 2])[[0, 1, 2, 3, 4, 5, 6, 7]]
# 处理数据 db_tb[3] = db_tb[3].apply(set_column3)
# 保存数据 db_tb.to_csv('db_tb.csv') 异步抓取数据库详细信息: async def fetch(session, url): async with session.get(url) as response:
return await response.text()
async def get_db_data(db_name): url = 'https://db-engines.com/en/ranking_trend/system/%s' % db_name
async with aiohttp.ClientSession() as session: res = await fetch(session, url) content = BeautifulSoup(res, "html.parser") content.find_all("script") db_data = content.find_all("script")[2].string src_text = js2xml.parse(db_data) src_tree = js2xml.pretty_print(src_text) data_tree = BeautifulSoup(src_tree, 'html.parser') data_tree.find_all('number') data = [] (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |