爬取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()
最终结果
爬取Github Web API 并存入Mysql数据库相关推荐
- python爬虫爬取古诗词内容,并存入mysql
python爬虫爬取古诗词内容,并存入mysql 爬取结果展示: 代码如下: from urllib import request import re,os import pymysql import ...
- 【爬虫作业】使用scrapy爬取游戏发售表,存入mongo数据库
需求分析 昨天,我发布了爬取游戏发售表的文章,有一个小伙伴看完了以后,非常的困扰,他问我说,"仙草哥哥,你这个爬虫程序虽然很好,基本的功能也实现了,但是我觉得它太简单了,总共才几十行,不像一 ...
- mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...
基于Scrapy的爬虫爬取腾讯招聘网站岗位数据视频(见本头条号视频) 根据TIOBE语言排行榜更新的最新程序语言使用排行榜显示,python位居第三,同比增加2.39%,为什么会越来越火,越来越受欢迎 ...
- mysql 豆瓣,爬取豆瓣电影Top250并存入Mysql
最近使用scrapy爬取了豆瓣电影Top250的数据和图片保存到Mysql,给大家分享一下 创建scrapy startproject doubantop250 items.py class Doub ...
- 使用scrapy爬取伯乐在线多线程存为MySQL数据库
在spider文件中的程序为 import scrapy from ..items import BolespiderItemclass BoleSpider(scrapy.Spider):name ...
- scrapy mysql 豆瓣_利用Scrapy爬取豆瓣图书并保存至Mysql数据库
Scrapy是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据. 准备工作 没有安装Scrapy的同学需要安装一下,有两种方式安装: 安装了Anaconda的同学直接在命令行输入con ...
- 利用免费工具爬取关键词(数据)的豆瓣读书数据——八爪鱼爬取数据并导出到Excel/Mysql数据库设置示例——关键词:爬虫、读书、实用
目录 原始需求 需求解读 所需软件配置 软件介绍 八爪鱼 Excel Navicat Mysql 数据采集及保存 步骤1 探索搜索页面规律 步骤二 八爪鱼批量生成链接,添加参数(前缀+尾巴) 步骤 ...
- python爬取电影信息并插入至MySQL数据库
在上篇博文中,博主使用python爬取了豆瓣电影的影片信息,接下来,博主考虑到在之前做的JavaWeb电影院项目中需要向数据库中一个个的插入影片数据,十分的繁琐,那么在使用了python爬虫后,这个操 ...
- web项目数据存入mysql数据库中文乱码问题
刚开始怀疑是项目中编码设置问题,发现在web.xml中已经有过设置:后来dubug显示数据在传输的过程中一切正常,怀疑是数据库编码问题,然后查看mysql编码: show variables like ...
最新文章
- Application Session Cookie ViewState Cache Hidden 区别
- 第一次用写一个3d轮播
- UNITY 接讯飞语音过程总结
- 3237: [Ahoi2013]连通图 线段树分治
- 19行代码AC——习题3-4 周期串(UVa-455)_解题报告
- VS_QT中配置qDebug输出
- sql server charindex函数和patindex函数详解(转)
- Git(7)-Git commit
- 信息学奥赛一本通(1017:浮点型数据类型存储空间大小)
- 2021年最新执子之手唯美表白HTML网站源码
- 虚拟机使用ceph-deploy安装ceph
- hdfs+zookeeper+hbase分布式在k8s中部署(本文已过期)
- 2020年php发卡源码,2020年最新PHP自动化售货发卡网源码带教程安装
- SPSS-论文常用格式-三线表
- 小程序源码:长期稳定短视频去水印-多玩法安装简单
- 蓝牙音箱延迟测试软件,“Latency Test”详细操作流程,一款测试TWS耳机延迟的软件...
- Trident API
- QSqlQueryModel搭配QTableView使用卡死问题
- 【编译原理入门】–编译器compiler
- 传奇私服服务器怎么增加npc,在自己的传奇服务器中如何添加NPC
热门文章
- LeetCode 1165. 单行键盘(哈希)
- LintCode 1652. 区间异或 II
- LeetCode 204. 计数质数(质数的倍数不是质数)
- LeetCode 212. 单词搜索 II(Trie树+DFS)
- Linux常用的命令及操作技巧
- python 强制结束线程_在python中实现强制关闭线程的示例
- 知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】
- 6 年大厂面试官,谈谈我对算法岗面试的一些看法
- 消息中间件系列(三):主流的消息队列中间件有哪些?
- 论文浅尝 | 基于知识图谱注意力网络的商品推荐