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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解

發布時間:2025/3/15 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關注!
歡迎關注微信公眾號:寶藏女孩的成長日記
讓這個可愛的寶藏女孩在努力的道路上與你一起同行!
如有轉載,請注明出處(如不注明,盜者必究)

目錄

    • 一、前提準備:GitHub簡介
    • 二、上代碼
      • 2.1處理響應
      • 2.2返回每個倉庫的特定信息
      • 2.3監視API的速率限制

一、前提準備:GitHub簡介

???????GitHub(https://github.com/)是一個面向開源及私有軟件項目的托管平臺。GitHub上的項目都存儲在倉庫中,包含與項目相關聯的一切:代碼,項目參與者的信息,問題和bug報告等等。對于喜歡的項目,GitHub用戶可以給它加星(star)以表示支持,用戶還可以跟蹤他可能想使用的項目。

???????先看看這個網址https://api.github.com/search/repositories?q=language:python&sort=stars

這個調用返回GitHub當前托管了多少個Python項目,還有最受歡迎的Python倉庫信息,下面來仔細研究這個調用。
https://api.github.com/:將請求發送到GitHub網站中響應API調用的部分
search/repositories:讓API搜素GitHub是上的所有倉庫
repositories后面的?:指出要傳遞一個實參
q=:指定查詢
language:python:獲取主要語言為Python的倉庫的信息
&sort=stars:指定項目按照其獲得的星級進行排序

搜索結果如圖

total_count:總共有多少項目
incomplete_results:不完整的結果=false 表明請求是成功的
items:包含GitHub上最受歡迎的Python項目的信息

???????接下來,我們將編寫一個程序,它將自動下載GitHub上星級最高的Python項目信息。

二、上代碼

2.1處理響應

# coding = utf-8import requests# 執行api調用并存儲響應 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars' r = requests.get(url)# r.status_code屬性:狀態碼為200表示請求成功 print("Status code:", r.status_code)# 將api響應存儲在一個變量中(這個api返回json格式的信息,因此我們使用方法json()將這些信息轉換為python字典) response_dict = r.json() # 打印與'total_count'相關聯的值,指出GitHub總共包含了多少個Python倉庫 print("Total repositories:", response_dict['total_count'])# 探索有關倉庫的信息 repo_dicts = response_dict['items'] print("Repositories returned:", len(repo_dicts))"""研究第一個倉庫""" repo_dict = repo_dicts[0] # 打印這個字典的鍵數,看看其中有多少信息 print("\nKeys:", len(repo_dict)) # #打印這個字典的所有鍵,看看其中有哪些信息 # for key in sorted(repo_dict.keys()): # print(key)# 表示第一個倉庫的字典中與很多鍵相關聯的值 print("\nSelected information about first repository:") # 打印項目的名稱 print('Name:', repo_dict['name']) # 項目所有者是用一個字典來表示的,因此我們使用鍵owner來訪問表示所有者的字典,再使用鍵key來獲取所有者的登錄名 print("Owner:", repo_dict['owner']['login']) # 打印獲得了多少個星的評級 print("Stars:", repo_dict['stargazers_count']) #打印項目再GitHub倉庫的URL print("Reponsitory:",repo_dict['html_url']) #顯示項目的創建時間 print("Created:", repo_dict['created_at']) #顯示項目最后一次更新的時間 print("Updated:", repo_dict['updated_at']) #打印倉庫的描述 print("Description:",repo_dict['description'])

運行結果

https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關注!
歡迎關注微信公眾號:寶藏女孩的成長日記
讓這個可愛的寶藏女孩在努力的道路上與你一起同行!
如有轉載,請注明出處(如不注明,盜者必究)

2.2返回每個倉庫的特定信息

# coding = utf-8import requests# 執行api調用并存儲響應 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars' r = requests.get(url)# r.status_code屬性:狀態碼為200表示請求成功 print("Status code:", r.status_code)# 將api響應存儲在一個變量中(這個api返回json格式的信息,因此我們使用方法json()將這些信息轉換為python字典) response_dict = r.json() # 打印與'total_count'相關聯的值,指出GitHub總共包含了多少個Python倉庫 print("Total repositories:", response_dict['total_count'])# 探索有關倉庫的信息 repo_dicts = response_dict['items'] print("Repositories returned:", len(repo_dicts))"""研究第一個倉庫""" repo_dict = repo_dicts[0] # 打印這個字典的鍵數,看看其中有多少信息 print("\nKeys:", len(repo_dict)) # #打印這個字典的所有鍵,看看其中有哪些信息 # for key in sorted(repo_dict.keys()): # print(key)# 表示第一個倉庫的字典中與很多鍵相關聯的值 print("\nSelected information about first repository:")for repo_dict in repo_dicts:# 打印項目的名稱print('Name:', repo_dict['name'])# 項目所有者是用一個字典來表示的,因此我們使用鍵owner來訪問表示所有者的字典,再使用鍵key來獲取所有者的登錄名print("Owner:", repo_dict['owner']['login'])# 打印獲得了多少個星的評級print("Stars:", repo_dict['stargazers_count'])# 打印項目再GitHub倉庫的URLprint("Reponsitory:", repo_dict['html_url'])# 打印倉庫的描述print("Description:", repo_dict['description'])

運行結果

2.3監視API的速率限制

大多數API都存在速率限制,要獲悉你是否接近了GitHub的限制,在瀏覽器中輸入https://api.github.com/rate_limit,也可以直接點擊此處便可以得到速率限制信息

{"resources": {"core": {"limit": 60, "remaining": 60, "reset": 1598258938},"graphql": {"limit": 0, "remaining": 0, "reset": 1598258938},"integration_manifest": {"limit": 5000, "remaining": 5000, "reset": 1598258938},"search": {"limit": 10, "remaining": 10, "reset": 1598255398}},"rate": {"limit": 60, "remaining": 60, "reset": 1598258938}}

如圖可知,極限為每分鐘處理10個請求,而在這一分鐘內,我們還可以執行10個請求,reset值指的是配額將重置的Unix時間或新紀元時間(1970年1月1日午夜后多少秒)。用完配額后,你將收到一條簡單的響應,由此知道API已到達極限。到達極限后,你必須等待配額重置

注意:很多API都需要你注冊獲得API密匙后才能執行API調用。
學《python編程從入門到實戰》17章第一節。
以上就是全部內容啦,如果有不懂的小伙伴歡迎提出來傲!咱一起解決

總結

以上是生活随笔為你收集整理的数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。