亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python學(xué)習(xí)之路16-使用API

lansheng228 / 3170人閱讀

摘要:本篇是數(shù)據(jù)處理的第三篇,本篇將使用應(yīng)用程序接口自動(dòng)請(qǐng)求網(wǎng)站的特定信息并可視化。前言本將需要用到模塊來(lái)請(qǐng)求網(wǎng)站數(shù)據(jù)。使用可視化倉(cāng)庫(kù)使用一個(gè)參數(shù)配置類來(lái)定義圖表的參數(shù),并自定義圖表中每個(gè)條形的描述信息,并給這些條形添加網(wǎng)址鏈接。

《Python編程:從入門到實(shí)踐》筆記。
本篇是Python數(shù)據(jù)處理的第三篇,本篇將使用Web應(yīng)用程序接口自動(dòng)請(qǐng)求網(wǎng)站的特定信息并可視化。
1. 前言

本將需要用到requests模塊來(lái)請(qǐng)求網(wǎng)站數(shù)據(jù)。主要內(nèi)容如下:

向GitHub請(qǐng)求項(xiàng)目數(shù)據(jù),按星排序;

使用pygal可視化上述數(shù)據(jù);

調(diào)用Hacker News的API

2. GitHub repositories

獲取GitHub中倉(cāng)庫(kù)的描述信息,并按星數(shù)排序:

# 代碼:
import requests

# 執(zhí)行API調(diào)用并存儲(chǔ)響應(yīng),注意不要輸錯(cuò)了!
url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
r = requests.get(url)
print("Status code:", r.status_code)

# 將API響應(yīng)存儲(chǔ)在一個(gè)變量中
response_dict = r.json()
print("Total repositories:", response_dict["total_count"])

# 探索有關(guān)倉(cāng)庫(kù)的信息
repo_dicts = response_dict["items"]
print("Repositories returned:", len(repo_dicts))

# 研究第一個(gè)倉(cāng)庫(kù)
repo_dict = repo_dicts[0]
print("
Keys:", len(repo_dict))
for key in sorted(repo_dict.keys()):
    print(key)
    
# 結(jié)果:
Status code: 200
Total repositories: 2563652
Repositories returned: 30

Keys: 72
archive_url
archived
assignees_url
blobs_url
-- snip --

有些請(qǐng)求可能并不能成功,可能需要你的個(gè)人授權(quán)碼:

headers = {"Authorization":"your perosonal token"}
url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
r = requests.get(url, headers=headers)

大多數(shù)API都存在速率限制,即特定時(shí)間內(nèi)可執(zhí)行的請(qǐng)求數(shù)。對(duì)于GitHub的速率限制可以訪問(wèn) https://api.github.com/rate_l... 訪問(wèn),時(shí)間是“每分鐘”。

3. 使用Pygal可視化倉(cāng)庫(kù)

使用一個(gè)參數(shù)配置類來(lái)定義圖表的參數(shù),并自定義圖表中每個(gè)條形的描述信息,并給這些條形添加網(wǎng)址鏈接。

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS

-- snip --
repo_dicts = response_dict["items"]

names, plot_dicts = [], []
for repo_dict in repo_dicts:
    names.append(repo_dict["name"])

    plot_dict = {
        # 每個(gè)數(shù)據(jù)的值
        "value": repo_dict["stargazers_count"],
        # 自定義每個(gè)數(shù)據(jù)的描述信息
        # 原文中沒(méi)有將其轉(zhuǎn)換成str,報(bào)錯(cuò);可能現(xiàn)在數(shù)據(jù)類型更改了?
        "label": str(repo_dict["description"]),
        # 為每個(gè)條添加網(wǎng)址鏈接
        "xlink": repo_dict["html_url"],
    }
    plot_dicts.append(plot_dict)

# 可視化
my_style = LS("#333366", base_style=LCS)
# 圖表配置類
my_config = pygal.Config()
# x軸標(biāo)簽順時(shí)針旋轉(zhuǎn)45度
my_config.x_label_rotation = 45
# 不顯示圖例
my_config.show_legend = False
my_config.title_font_size = 24
my_config.label_font_size = 14
# 主標(biāo)簽大小,y軸
my_config.major_label_font_size = 18
# x軸標(biāo)簽最長(zhǎng)15個(gè)字符
my_config.truncate_label = 15
# 隱藏水平線
my_config.show_y_guides = False
my_config.width = 1000

chart = pygal.Bar(my_config, style=my_style)
chart.title = "Most-Starred Python Projects on GitHub"
chart.x_labels = names

chart.add("", plot_dicts)
chart.render_to_file("python_repos.svg")

得到如下表格:

現(xiàn)在每一個(gè)數(shù)據(jù)都有自己的描述信息,并且點(diǎn)擊它們還能跳到它們的項(xiàng)目網(wǎng)站。注意左側(cè)y軸上的刻度,書中的刻度很密集,但同樣的代碼在這里不知道為什么很稀疏,所以這里沒(méi)有體現(xiàn)出第34行代碼的效果。

4. Hacker News API

Hacker News的API能讓你訪問(wèn)該網(wǎng)站所有文章和評(píng)論的信息,且不用注冊(cè)獲取秘鑰。下面通過(guò)一個(gè)API調(diào)用獲取其上當(dāng)前熱門文章的ID,再查看前30篇文章(有可能訪問(wèn)不了,至于原因以及具體怎么做,你懂的):

import requests
from operator import itemgetter

# 執(zhí)行API調(diào)用并存儲(chǔ)響應(yīng)
url = "https://hacker-news.firebaseio.com/v0/topstories.json"
r = requests.get(url)
print("Status code:", r.status_code)

# 處理有關(guān)每篇文章的信息
submission_ids = r.json()
submission_dicts = []
for submission_id in submission_ids[:30]:
    # 對(duì)于每篇文章,都執(zhí)行一個(gè)API調(diào)用
    url = ("https://hacker-news.firebaseio.com/v0/item/" + str(submission_id) + ".json")
    submission_r = requests.get(url)
    print(submission_r.status_code)
    response_dict = submission_r.json()

    submission_dict = {
        "title": response_dict["title"],
        "link": "http://news.ycombinator.com/item?id=" + str(submission_id),
        "comments": response_dict.get("descendants", 0)
    }
    submission_dicts.append(submission_dict)

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

for submission_dict in submission_dicts:
    print("
Title:", submission_dict["title"])
    print("Discussion link:", submission_dict["link"])
    print("Comments:", submission_dict["comments"])

以下是輸出結(jié)果:

Status code: 200
200
200
-- snip --

Title: Wells Fargo Hit with $1B in Fines
Discussion link: http://news.ycombinator.com/item?id=16886328
Comments: 358

Title: Want airline food? Take Amtrak
Discussion link: http://news.ycombinator.com/item?id=16882231
Comments: 160

-- snip --
5. 小結(jié)

目前已經(jīng)完成了兩個(gè)項(xiàng)目,這本書還剩最后一個(gè)Django項(xiàng)目,從下一篇開(kāi)始,也是用三篇文章來(lái)初步了解Django,制作一個(gè)簡(jiǎn)單的web應(yīng)用。


迎大家關(guān)注我的微信公眾號(hào)"代碼港" & 個(gè)人網(wǎng)站 www.vpointer.net ~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/44723.html

相關(guān)文章

  • scrapy學(xué)習(xí)之路4.1(SQLAlchemy的使用)(未完)

    摘要:是編程語(yǔ)言下的一款框架,該框架建立在數(shù)據(jù)庫(kù)之上,使用關(guān)系對(duì)象映射進(jìn)行數(shù)據(jù)庫(kù)操作,簡(jiǎn)言之便是將對(duì)象轉(zhuǎn)換成,然后使用數(shù)據(jù)執(zhí)行并獲取執(zhí)行結(jié)果。正確使用的前提是了解關(guān)系數(shù)據(jù)庫(kù)的原理。就是把數(shù)據(jù)庫(kù)表的行與相應(yīng)的對(duì)象建立關(guān)聯(lián),互相轉(zhuǎn)換。 sqlalchemy是Python編程語(yǔ)言下的一款ORM框架,該框架建立在數(shù)據(jù)庫(kù)API之上,使用關(guān)系對(duì)象映射進(jìn)行數(shù)據(jù)庫(kù)操作,簡(jiǎn)言之便是:將對(duì)象轉(zhuǎn)換成SQL,然后使...

    shengguo 評(píng)論0 收藏0
  • Python全棧之路系列之?dāng)?shù)字?jǐn)?shù)據(jù)類型

    摘要:數(shù)字在中,整型長(zhǎng)整型浮點(diǎn)數(shù)負(fù)數(shù)布爾值等都可以稱之為數(shù)字類型。數(shù)字類型的復(fù)雜度整數(shù)比浮點(diǎn)數(shù)簡(jiǎn)單浮點(diǎn)數(shù)比復(fù)數(shù)簡(jiǎn)單。布爾類型布爾類型其實(shí)就是數(shù)字和的變種而來(lái),即真或假,實(shí)際上就是內(nèi)置的數(shù)字類型的子類而已。 上篇文章中我們簡(jiǎn)單的體驗(yàn)了Python語(yǔ)言基本概念與語(yǔ)法,那么在繼續(xù)深入下去的過(guò)程中,不妨先學(xué)習(xí)幾個(gè)常見(jiàn)的Python內(nèi)置數(shù)據(jù)類型?這也是大部分Python教科書的學(xué)習(xí)目錄,由淺至深,慢慢...

    Developer 評(píng)論0 收藏0
  • Python 進(jìn)階之路 (十一) 再立Flag, 社區(qū)最全的itertools深度解析(下)

    摘要:將每一行作為返回,其中是每行中的列名。對(duì)于每一行,都會(huì)生成一個(gè)對(duì)象,其中包含和列中的值。它返回一個(gè)迭代器,是迭代結(jié)果都為的情況。深度解析至此全劇終。 簡(jiǎn)單實(shí)戰(zhàn) 大家好,我又來(lái)了,在經(jīng)過(guò)之前兩篇文章的介紹后相信大家對(duì)itertools的一些常見(jiàn)的好用的方法有了一個(gè)大致的了解,我自己在學(xué)完之后仿照別人的例子進(jìn)行了真實(shí)場(chǎng)景下的模擬練習(xí),今天和大家一起分享,有很多部分還可以優(yōu)化,希望有更好主意...

    tomorrowwu 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路23-文本和字節(jié)序列

    摘要:字符編碼表,碼位碼元將編碼字符集中的碼位轉(zhuǎn)換成有限比特長(zhǎng)度的整型值的序列。字符編碼方案,碼元序列化也稱為常說(shuō)的序列化。每個(gè)字節(jié)里的二進(jìn)制數(shù)就是字節(jié)序列。另一個(gè)情況則是壓縮字節(jié)序列的值,如或進(jìn)程長(zhǎng)度編碼等無(wú)損壓縮技術(shù)。 《流暢的Python》筆記。本篇主要講述不同編碼之間的轉(zhuǎn)換問(wèn)題,比較繁雜,如果平時(shí)處理文本不多,或者語(yǔ)言比較單一,沒(méi)有多語(yǔ)言文本處理的需求,則可以略過(guò)此篇。 1. 前言 ...

    anRui 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路3-操作列表

    摘要:本章內(nèi)容主要是對(duì)列表的進(jìn)一步操作,以及初識(shí)元組數(shù)據(jù)結(jié)構(gòu)。列表非常適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集,列表可以被修改。代碼結(jié)果相比于列表,元組是更簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。 《Python編程:從入門到實(shí)踐》筆記。本章內(nèi)容主要是對(duì)列表的進(jìn)一步操作,以及初識(shí)元組數(shù)據(jù)結(jié)構(gòu)。 1. 遍歷列表 本章主要是for循環(huán): # 代碼: magicians = [alice, david, carolin...

    makeFoxPlay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<