日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2024/7/19 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬取Github Web API 并存入Mysql数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寫在前面
本文內(nèi)容為爬取GitHub的Web API并存入mysql數(shù)據(jù)庫,內(nèi)容為華為鴻蒙OS相關(guān)的代碼。

WEB API
Web API是網(wǎng)絡(luò)應(yīng)用程序接口。它包含了廣泛的功能,網(wǎng)絡(luò)應(yīng)用通過API接口,可以實(shí)現(xiàn)存儲(chǔ)服務(wù)、消息服務(wù)、計(jì)算服務(wù)等能力。Web API最主要的功能是實(shí)現(xiàn)構(gòu)建基于GTTP的面向各種客戶端的服務(wù)框架。

Github 的 Web API
可以通過 https://api.github.com 查看Github 的 Web API列表

例如:https://api.github.com/repos/{owner}/{repo},可以通過用戶名和倉庫名獲取到指定項(xiàng)目的有關(guān)內(nèi)容。

(1)導(dǎo)入所需Python庫

import requests import pymysql

(2)定義指定的Web API的URL,并將其賦給變量api_url。

這里先設(shè)為 https://api.github.com/repos/Awesome-HarmonyOS/HarmonyOS
其中,Awesome-HarmonyOS表示用戶名,HarmonyOS表示倉庫名。

查看狀態(tài)碼,200為正常響應(yīng)。

api_url= 'https://api.github.com/repos/Awesome-HarmonyOS/HarmonyOS' req = requests.get(api_url) print('狀態(tài)碼:', req.status_code)

可以直接在瀏覽器中進(jìn)行訪問,查看數(shù)據(jù)大致情況如下圖所示:


可以看到,響應(yīng)數(shù)據(jù)包含的值較多,因此在爬取之后可以考慮對(duì)數(shù)據(jù)進(jìn)行簡單清洗,只保留一些需要的重要信息。

(3)使用requests庫的get方法獲得Web API的Response對(duì)象。

req = requests.get(api_url)

(4)使用json方法將Response的數(shù)據(jù)轉(zhuǎn)換為JSON的數(shù)據(jù)對(duì)象。

req_dic = req.json()

(5)打印一些基本信息

上述做法可以成功爬取到指定HarmonyOS倉庫的信息,接下來爬取所有與HarmonyOS有關(guān)的倉庫信息。

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

搜索關(guān)鍵詞為HarmonyOS的倉庫

api_url= 'https://api.github.com/search/repositories?q=HarmonyOS' req = requests.get(api_url) print('狀態(tài)碼:', req.status_code) req_dic = req.json()

(7)查看本次Web API請求是否完成,false表示完成。以及返回項(xiàng)目數(shù)量。

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

(8)使用pymysql連接數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫、表并插入數(shù)據(jù)。
通過pymysql庫的connect方法返回?cái)?shù)據(jù)庫連接對(duì)象db,在改方法中傳入?yún)?shù)host、user、password等。

# 創(chuàng)建數(shù)據(jù)庫 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")# 創(chuàng)建表 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")# 插入數(shù)據(jù) 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()

最終結(jié)果

總結(jié)

以上是生活随笔為你收集整理的爬取Github Web API 并存入Mysql数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。