python 使用API2 2021-03-01

import request? ? #導(dǎo)入模塊

from plotly.graph_objs import Bar

from plotly import offline

#執(zhí)行API調(diào)用并存儲(chǔ)響應(yīng)

url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'? ? #存儲(chǔ)API調(diào)用的url

headers = {'Accpet':'application/vnd/github.v3+json'}? ? #API版本

r = requests.get(url,headers = headers)? ? #request調(diào)用API,get()響應(yīng)對(duì)象賦給r

print(f"Status code:{r.status_code}")? ? #status_code指出請(qǐng)求是否成功,狀態(tài)碼200表示請(qǐng)求成功


添加自定義工具提示:

#處理結(jié)果

response_dict = r.json()? ? #json轉(zhuǎn)換為字典

#探索有關(guān)倉(cāng)庫(kù)的信息

repo_dicts = response_dict['items']? ? #items關(guān)聯(lián)值是列表徘层,其中包含很多字典

repo_names,stars,labels = [],[],[]? ? #創(chuàng)建三個(gè)空列表存儲(chǔ)數(shù)據(jù)

#遍歷所有字典

for repo_dict in repo_dicts:

? ? repo_names.append(repo_dict['name'])? ? #提取每個(gè)項(xiàng)目中的名字柒啤,并添加

? ? stars.append(repo_dict['stargazers_count'])? ? #提取每個(gè)項(xiàng)目中的星級(jí)橡淆,并添加


? ? owner = repo_dict['owner']['login']? ? #提取每個(gè)項(xiàng)目中的所有者

? ? description = repo_dict['description']? ? #提取每個(gè)項(xiàng)目中的描述

? ? label = f"{owner}<br />{description}"? ? #HTML代碼 所有者-換行符-描述

? ? labels.append(label)? ? #添加到labels中

#可視化

data = [{

? ? 'type':'bar',? ? #圖標(biāo)類型

? ? 'x':repo_names,? ? #x值

? ? 'y':stars,? ? #y值

? ? 'hovertext':labels,? ? #自定義工具提示:懸停文本

? ? 'maker':{

? ? ? ? 'color':'rgb(60,100,150)',? ? #藍(lán)色

? ? ? ? 'line':{'width':1.5,'color':'rgb(25,25,25)'}? ? #寬1.5像素的深灰色輪廓

????},

? ? 'opacity':0.6,? ? #不透明度0.6

}]

my_layout = {? ? #設(shè)計(jì)布局

? ? 'title':'Github上最受歡迎的Python項(xiàng)目',? ? #圖標(biāo)名稱

? ? 'titlefont':{'size':28},

? ? #x軸標(biāo)簽

? ? 'xaxis':{

????????'title':'Repository',

? ? ? ? 'titlefont':{'size':24},

? ? ? ? 'tickfont':{'size':14},? ? #刻度表字號(hào)

????},

? ? #y軸標(biāo)簽

? ? 'yaxis':{

????????'title':'Stars',

? ? ? ? 'titlefont':{'size':24},

? ? ? ? 'tickfont':{'size':14},? ? #刻度表字號(hào)

????},

}

fig = {'data':data,'layout':my_layout}

offline.plot(fig,filename='python_repos.html')



在圖標(biāo)中添加可單擊的鏈接:

#處理結(jié)果

response_dict = r.json()? ? #json轉(zhuǎn)換為字典

#探索有關(guān)倉(cāng)庫(kù)的信息

repo_dicts = response_dict['items']? ? #items關(guān)聯(lián)值是列表描焰,其中包含很多字典

repo_links,stars,labels = [],[],[]? ? #創(chuàng)建三個(gè)空列表存儲(chǔ)數(shù)據(jù)

#遍歷所有字典

for repo_dict in repo_dicts:

? ? repo_name = repo_dict['name']? ? #提取每個(gè)項(xiàng)目中的名字

? ??repo_url = repo_dict['html_url']? ? #提取每個(gè)項(xiàng)目中的url

? ??repo_link = f"<a href='{repo_url}'>{repo_name}</a>"? ? ?#<a href='url'>linktext</a>

? ? repo_links.append(repo_link)? ? #添加進(jìn)去


? ? stars.append(repo_dict['stargazers_count'])? ? #提取每個(gè)項(xiàng)目中的星級(jí)瘫证,并添加

????owner = repo_dict['owner']['login']? ? #提取每個(gè)項(xiàng)目中的所有者

????description = repo_dict['description']? ? #提取每個(gè)項(xiàng)目中的描述

????label = f"{owner}{description}"? ? #HTML代碼 所有者-換行符-描述

????labels.append(label)? ? #添加到labels中

#可視化

data = [{

? ? 'type':'bar',? ? #圖標(biāo)類型

? ? 'x':repo_links,

? ? 'y':stars,? ? #y值

'hovertext':labels,? ? #自定義工具提示:懸停文本

? ? 'maker':{

? ? ? ? 'color':'rgb(60,100,150)',? ? #藍(lán)色

? ? ? ? 'line':{'width':1.5,'color':'rgb(25,25,25)'}? ? #寬1.5像素的深灰色輪廓

????},

? ? 'opacity':0.6,? ? #不透明度0.6

}]


Hacker News API:

#調(diào)用返回本書(shū)編寫(xiě)期間最熱門的文章的信息:

http://hacker-news.firebaseio.com/v0/item/19155826.json


import requests

import json


#執(zhí)行API調(diào)用并存儲(chǔ)響應(yīng)

url = 'http://hacker-news.firebaseio.com/v0/item/19155826.json'

r = requests.get(url)

print(f"Status code:{r.status_code}")


#探索數(shù)據(jù)的結(jié)構(gòu)

response_dict = r.json()

readable_file = 'data/readable_hn_data.json'

with open(readable_file,'w') as f:

? ? json.dump(response_dict,f,indent = 4)? ? #運(yùn)行這個(gè)URL


#URL返回一個(gè)列表咐容,其中包含Hacker News上排名靠前的文章的ID:

http://hacker-news.firebaseio.com/v0/topstories.json

#獲取主頁(yè)每篇文章

from operator import itemgetter

import requests


#執(zhí)行API調(diào)用并存儲(chǔ)

url = 'http://hacker-news.firebaseio.com/v0/topstories.json'

r = requests.get(url)

print(f"Status code:{r.status_code}")


#處理有關(guān)每篇文章的信息

submission_ids = r.json()? ? #轉(zhuǎn)換為列表并存儲(chǔ)到ids中

submission_dicts = []? ? #創(chuàng)建空列表


for submission_id insubmission_ids[:30]:

? ? #對(duì)于每篇文章舆逃,都執(zhí)行一個(gè)API調(diào)用,URL包含submission_id的當(dāng)前值

? ? url = f"http://hacker-news.firebaseio.com/v0/item/{submission_id}.json"

? ? r = requests.get(url)

? ? print(f"id:{submission_id}\tstatus:{r.status_code}")

? ? response_dict = r.json()


? ? #對(duì)于每篇文章,都創(chuàng)建一個(gè)字典

? ? submission_dict = {

? ? ? ? 'title':response_dict['title'],? ? #存儲(chǔ)文章標(biāo)題

? ? ? ? 'hn_link':f"http://hacker-news.firebaseio.com/item?id={submission_id}",? ? #存儲(chǔ)頁(yè)面鏈接

? ? ? ? 'comments':response_dict['descendants'],? ? #存儲(chǔ)評(píng)論數(shù)

????}

? ? submission_dicts.append(submission_dict)


#根據(jù)鍵comments關(guān)聯(lián)的值路狮,對(duì)列表進(jìn)行排序虫啥,降序

submission_dicts = sorted(submission_dicts,key = itemgetter('comments'),reverse = True)


for submission_dict in submission_dicts:

? ? print(f"\nTitle:{submission_dict['title']}")

? ? print(f"Discussion link:{submission_dict['hn_link']}")

? ? print(f"Comments:{submission_dict['comments']}")

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市奄妨,隨后出現(xiàn)的幾起案子涂籽,更是在濱河造成了極大的恐慌,老刑警劉巖砸抛,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评雌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡直焙,警方通過(guò)查閱死者的電腦和手機(jī)景东,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箕般,“玉大人耐薯,你說(shuō)我怎么就攤上這事∷坷铮” “怎么了曲初?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杯聚。 經(jīng)常有香客問(wèn)我臼婆,道長(zhǎng),這世上最難降的妖魔是什么幌绍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任颁褂,我火速辦了婚禮,結(jié)果婚禮上傀广,老公的妹妹穿的比我還像新娘颁独。我一直安慰自己,他們只是感情好伪冰,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布誓酒。 她就那樣靜靜地躺著,像睡著了一般贮聂。 火紅的嫁衣襯著肌膚如雪靠柑。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天吓懈,我揣著相機(jī)與錄音歼冰,去河邊找鬼。 笑死耻警,一個(gè)胖子當(dāng)著我的面吹牛隔嫡,可吹牛的內(nèi)容都是我干的甸怕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼畔勤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蕾各!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起庆揪,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤式曲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后缸榛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吝羞,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年内颗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钧排。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡均澳,死狀恐怖恨溜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情找前,我是刑警寧澤糟袁,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站躺盛,受9級(jí)特大地震影響项戴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槽惫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一周叮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧界斜,春花似錦仿耽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至得糜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晰洒,已是汗流浹背朝抖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谍珊,地道東北人治宣。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親侮邀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坏怪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容