爬取Github Web API 并存入Mysql数据库

写在前面
本文内容为爬取GitHub的Web API并存入mysql数据库,内容为华为鸿蒙OS相关的代码。

WEB API
Web API是网络应用程序接口。它包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力。Web API最主要的功能是实现构建基于GTTP的面向各种客户端的服务框架。

Github 的 Web API
可以通过 https://api.github.com 查看Github 的 Web API列表
在这里插入图片描述
例如:https://api.github.com/repos/{owner}/{repo},可以通过用户名和仓库名获取到指定项目的有关内容。

(1)导入所需Python库

import requests
import pymysql

(2)定义指定的Web API的URL,并将其赋给变量api_url。

这里先设为 https://api.github.com/repos/Awesome-HarmonyOS/HarmonyOS
其中,Awesome-HarmonyOS表示用户名,HarmonyOS表示仓库名。

查看状态码,200为正常响应。

api_url= 'https://api.github.com/repos/Awesome-HarmonyOS/HarmonyOS'
req = requests.get(api_url)
print('状态码:', req.status_code)

可以直接在浏览器中进行访问,查看数据大致情况如下图所示:

在这里插入图片描述
可以看到,响应数据包含的值较多,因此在爬取之后可以考虑对数据进行简单清洗,只保留一些需要的重要信息。

(3)使用requests库的get方法获得Web API的Response对象。

req = requests.get(api_url)

(4)使用json方法将Response的数据转换为JSON的数据对象。

req_dic = req.json()

(5)打印一些基本信息
在这里插入图片描述
在这里插入图片描述

上述做法可以成功爬取到指定HarmonyOS仓库的信息,接下来爬取所有与HarmonyOS有关的仓库信息。

(6)将api_url改为https://api.github.com/search/repositories?q=HarmonyOS

搜索关键词为HarmonyOS的仓库

api_url= 'https://api.github.com/search/repositories?q=HarmonyOS'
req = requests.get(api_url)
print('状态码:', req.status_code)
req_dic = req.json()

(7)查看本次Web API请求是否完成,false表示完成。以及返回项目数量。

req_dic_items = req_dic['items']
print(req_dic['incomplete_results'])
print(len(req_dic_items))

(8)使用pymysql连接数据库,创建数据库、表并插入数据。
通过pymysql库的connect方法返回数据库连接对象db,在改方法中传入参数host、user、password等。

# 创建数据库
db = pymysql.connect(host='localhost', user='root', password='', port=3306)
cursor = db.cursor()
cursor.execute('CREATE DATABASE WebAPI DEFAULT CHARACTER SET utf8mb4')
print("create database successfully")# 创建表
db2 = pymysql.connect(host='localhost', user='root', password='', database='WebAPI', port=3306)
cursor2 = db2.cursor()
# cursor2.execute('DROP TABLE IF EXISTS HarmonyOS')
sql1 = """CREATE TABLE `HarmonyOS`(`id` int(10) NOT NULL AUTO_INCREMENT,`name` char(50) NOT NULL,`owner_login` char(20) NOT NULL,`description` text DEFAULT NULL,`stargazers_count` int(10) NOT NULL,PRIMARY KEY(`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"""try:cursor2.execute(sql1)db2.commit()print("created table successfully")
except:db2.rollback()print("created table failed")# 插入数据
for index,key in enumerate(req_dic_items):sql2 = 'INSERT INTO HarmonyOS' \'(name, owner_login, description, stargazers_count)' \'VALUES (%s, %s, %s, %s)'try:cursor2.execute(sql2, (key['name'], key['owner']['login'], key['description'], key['stargazers_count']))db2.commit()except:db2.rollback()print("Insert failed")
db2.close()

最终结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互

来源:AI科技大本营(ID:rgznai100)编译:禾木木你是否能想象 AI 以第一人称视角来理解世界是什么样的呢?未来,以第一人称视角理解世界的 AI 可以开启沉浸式体验的新时代。增强现实(AR)…

王道计算机网络 数据链路层整理 超详细版

数据链路层的基本概念 结点:主机、路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议…

Linux之用户/组 管理

关机&重启命令 shutdown -h now立刻进行关机shutdown -h 11分钟后关机(shutdown默认等于shutdown -h 1) -h即halt shutdown -r now现在重新启动计算机 -r即reboot halt关机reboot重新启动计算机sync把内存数据同步到磁盘 再进行shutdown/reboot/halt命令在执行…

贝尔实验室:如何让6G成为通用技术

来源:B5G与6G通信作者:沃尔克齐格勒:贝尔实验室“6G leadership”首席架构师。塞波伊约拉:诺基亚企业业务(Nokia Enterprise)首席工程师。未来智能实验室的主要工作包括:建立AI智能系统智商评测…

王道计算机网络 计算机网络体系结构整理 超详细版

计算机网络的概念 计算机网络是 互连的、自治的 计算机系统的集合。 互连:互联互通 自治:无主从关系 计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备和线路连接起来,由功能完善的软件实现资源共享和信息传递…

哥德尔的逻辑结构

来源:人机与认知实验室1920年代末,数学圈内的人们均认为所有数学问题都有一个确定的答案一一真或假。比如说,每个偶数均是两个质数之和,数学文献中称这个论断为哥德巴赫猜想。曾几何时,在传统认识中,人们认…

王道计算机组成原理 物理层整理 超详细版

数据通信 通信的目的是传送信息。 数据:传送信息的实体,通常是有意义的符号序列。 信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式。 ​ 数字信号:代表消息的参数取值是离散的。 ​ 模拟信号&#xf…

威胁生存!科学家警告灾难性“气候临界点”已逼近

来源:中国新闻网 中新网10月26日电 综合报道,从联合国的一份报告草案中,科学家已发现多个灾难性的“气候临界点”。专家警告,临界点之间相互关联,可能产生连锁反应,成为一种生存威胁。据报道,根…

王道计算机网络 网络层整理 超详细版

网络层功能概述 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。 1、路由选择与分组转发 2、异构网络互联 3、拥塞控制 数据交换方式 电路交换 在进行数据传输时,两个结点之间必须先建立一条专用…

ios点击有300毫秒延迟,输入框必须重压或长按才能获取焦点唤起软键盘

以下方法主要针对在vue中的使用 // ios点击有300毫秒延迟 1. 安装依赖包cnpm install fastclick --save 2. 在 /src/main.js 中引入并使用import FastClick from fastclickFastClick.attach(document.body)// 输入框必须重压或长按才能获取焦点唤起软键盘 // 这是由于上面引入了…

Forerunner:首个面向“多未来”的推测执行技术

来源:微软研究院AI头条编者按:10月26-29日,系统领域的全球顶会 SOSP 2021 在线上举办。在本届大会上,微软亚洲研究院研究员陈洋、郭众鑫、李润怀(实习生,浙江大学)、陈硕、周礼栋、张宪以及浙江…

linux的基础知识——信号的概念

1.计算机信号的特点 \qquad简单;不能携带大量信息;满足某个特设条件才发送 2.信号的机制 \qquadA与B两个进程,A向B发送一个信号,此时B进程正在执行自己的程序,在收到信号时,会暂停程序的执行,先…

Gartner发布对2022年及以后IT组织和用户的十大预测

来源:Gartner中国编辑:蒲蒲Gartner于近日发布对2022年及以后的十大战略预测。Gartner的十大预测从三个方面探讨了企业和IT领导人在持续中断和不确定性中获得的经验教训。这三个方面分别是:朝以人为本的方向推进、努力提高韧性以及超越期望的能…

王道计算机网络 传输层整理 超详细版

传输层是主机才有的层次。 传输层的功能 1、传输层提供进程和进程之间的逻辑通信。(网络层提供主机之间的通信) 逻辑通信:传输层之间的通信好像是沿着水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。…

这个最基本的生命细节才被揭开——25毫秒核孔穿梭

来源:生物通细胞中的所有蛋白质都是由复杂的分子机器组装而成的。这些核糖体的前体在细胞核中产生,然后通过所谓的核孔进入细胞。波恩大学和苏黎世联邦理工大学的研究人员首次在活细胞中拍摄了这个基本过程。他们的实验提高了对核糖体是如何产生的理解。…

计算机网络——基本介绍

1.计算机网络的概念 \qquad计算机网络是一个将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 \qquad这里的计算机系统,也可以成为端系统,其包括但不限…

王道计算机网络 应用层整理 超详细版

应用层概述 应用层对应用程序的通信提供服务。 应用层协议定义: 应用进程交换的报文类型(请求/响应) 各种报文类型的语法,如报文中的各个字段及其详细描述。 字段的语义,即包含在字段中的信息的含义。 进程何时、…

Facebook正式改名Meta,一个元宇宙新纪元由此开始

All in Metaverse,扎克伯格豪赌一个未来。来源:硅星人文:Juny 编辑:Lianzi美西时间早上7点,硅谷的天刚蒙蒙亮。Facebook硅谷总部前公司标志牌被蒙上了一层幕布。工作人员在标志牌前拉起了屏障,静静等待着…

计算机网络——标准化工作及相关组织

1.标准的分类 \qquad法定标准:由权威机构制定的,正式的,合法的标准,比如OSI标准;事实标准:某些强势产品在经过时间之后,这些产品的协议和技术就成为了标准,比如TCP/IP协议。 2.标准…

AI学会灌水和造假!Google新研究揭露了AI现实应用的陷阱

来源:Google AI、新智元作者:Alex DAmour、atherine Heller今天,机器学习(ML)模型得到了大规模的使用,而且影响力也越来越大。然而,当它们被用于现实世界的领域时,往往表现出意想不到…