数据分析--使用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代码详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈枚举和 那啥 那啥来着 哦 对对对
- 下一篇: 求1到100的数字累加和(python)