写在前面
本文内容为爬取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数据库相关推荐

  1. python爬虫爬取古诗词内容,并存入mysql

    python爬虫爬取古诗词内容,并存入mysql 爬取结果展示: 代码如下: from urllib import request import re,os import pymysql import ...

  2. 【爬虫作业】使用scrapy爬取游戏发售表,存入mongo数据库

    需求分析 昨天,我发布了爬取游戏发售表的文章,有一个小伙伴看完了以后,非常的困扰,他问我说,"仙草哥哥,你这个爬虫程序虽然很好,基本的功能也实现了,但是我觉得它太简单了,总共才几十行,不像一 ...

  3. mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...

    基于Scrapy的爬虫爬取腾讯招聘网站岗位数据视频(见本头条号视频) 根据TIOBE语言排行榜更新的最新程序语言使用排行榜显示,python位居第三,同比增加2.39%,为什么会越来越火,越来越受欢迎 ...

  4. mysql 豆瓣,爬取豆瓣电影Top250并存入Mysql

    最近使用scrapy爬取了豆瓣电影Top250的数据和图片保存到Mysql,给大家分享一下 创建scrapy startproject doubantop250 items.py class Doub ...

  5. 使用scrapy爬取伯乐在线多线程存为MySQL数据库

    在spider文件中的程序为 import scrapy from ..items import BolespiderItemclass BoleSpider(scrapy.Spider):name ...

  6. scrapy mysql 豆瓣_利用Scrapy爬取豆瓣图书并保存至Mysql数据库

    Scrapy是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据. 准备工作 没有安装Scrapy的同学需要安装一下,有两种方式安装: 安装了Anaconda的同学直接在命令行输入con ...

  7. 利用免费工具爬取关键词(数据)的豆瓣读书数据——八爪鱼爬取数据并导出到Excel/Mysql数据库设置示例——关键词:爬虫、读书、实用

    目录 原始需求 需求解读 所需软件配置 软件介绍 八爪鱼 Excel Navicat Mysql 数据采集及保存 步骤1  探索搜索页面规律 步骤二  八爪鱼批量生成链接,添加参数(前缀+尾巴) 步骤 ...

  8. python爬取电影信息并插入至MySQL数据库

    在上篇博文中,博主使用python爬取了豆瓣电影的影片信息,接下来,博主考虑到在之前做的JavaWeb电影院项目中需要向数据库中一个个的插入影片数据,十分的繁琐,那么在使用了python爬虫后,这个操 ...

  9. web项目数据存入mysql数据库中文乱码问题

    刚开始怀疑是项目中编码设置问题,发现在web.xml中已经有过设置:后来dubug显示数据在传输的过程中一切正常,怀疑是数据库编码问题,然后查看mysql编码: show variables like ...

最新文章

  1. Application Session Cookie ViewState Cache Hidden 区别
  2. 第一次用写一个3d轮播
  3. UNITY 接讯飞语音过程总结
  4. 3237: [Ahoi2013]连通图 线段树分治
  5. 19行代码AC——习题3-4 周期串(UVa-455)_解题报告
  6. VS_QT中配置qDebug输出
  7. sql server charindex函数和patindex函数详解(转)
  8. Git(7)-Git commit
  9. 信息学奥赛一本通(1017:浮点型数据类型存储空间大小)
  10. 2021年最新执子之手唯美表白HTML网站源码
  11. 虚拟机使用ceph-deploy安装ceph
  12. hdfs+zookeeper+hbase分布式在k8s中部署(本文已过期)
  13. 2020年php发卡源码,2020年最新PHP自动化售货发卡网源码带教程安装
  14. SPSS-论文常用格式-三线表
  15. 小程序源码:长期稳定短视频去水印-多玩法安装简单
  16. 蓝牙音箱延迟测试软件,“Latency Test”详细操作流程,一款测试TWS耳机延迟的软件...
  17. Trident API
  18. QSqlQueryModel搭配QTableView使用卡死问题
  19. 【编译原理入门】–编译器compiler
  20. 传奇私服服务器怎么增加npc,在自己的传奇服务器中如何添加NPC

热门文章

  1. LeetCode 1165. 单行键盘(哈希)
  2. LintCode 1652. 区间异或 II
  3. LeetCode 204. 计数质数(质数的倍数不是质数)
  4. LeetCode 212. 单词搜索 II(Trie树+DFS)
  5. Linux常用的命令及操作技巧
  6. python 强制结束线程_在python中实现强制关闭线程的示例
  7. 知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】
  8. 6 年大厂面试官,谈谈我对算法岗面试的一些看法
  9. 消息中间件系列(三):主流的消息队列中间件有哪些?
  10. 论文浅尝 | 基于知识图谱注意力网络的商品推荐