前言
这里是《Python从入门到实践》的练习答案,如果有错误或者可以改进的地方欢迎在评论区指正
一、17-1 其他语言
只需要将 language=python 改为 javascript Ruby 等即可:
import requests
# 执行API调用并储存响应
url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars'
headers = {'Accept': 'application/vnd.github.v3+json'}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
# 将API响应赋给一个变量
response_dict = r.json()
print(f"Total repositoies: {response_dict['total_count']}")
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print(f"Repositories returned: {len(repo_dicts)}")
print("\nSelected imformation about each repository:")
for repo_dict in repo_dicts:
print(f"\nName: {repo_dict['name']}")
print(f"Owner: {repo_dict['owner']['login']}")
print(f"Stars: {repo_dict['stargazers_count']}")
二、17-2最活跃的讨论
from operator import itemgetter
import requests
from plotly import offline
# Make an API call and store the response.
url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)
print(f"Status code: {r.status_code}")
# Process information about each submission.
submission_ids = r.json()
submission_dicts = []
for submission_id in submission_ids[:10]:
# Make a separate API call for each submission.
url = f"https://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()
# Build a dictionary for each article.
submission_dict = {
'title': response_dict['title'],
'hn_link': f"http://news.ycombinator.com/item?id={submission_id}",
'comments': len(response_dict['kids']),
}
submission_dicts.append(submission_dict)
submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),
reverse=True)
links, comments = [], []
for submission_dict in submission_dicts:
sub_title = submission_dict['title']
sub_url = submission_dict['hn_link']
link = f"<a href='{sub_url}'>{sub_title}</a>"
links.append(link)
comments.append(submission_dict['comments'])
# 可视化
data = [{
'type':'bar',
'x':links,
'y':comments,
'marker':{
'color':'rgb(100,150,100)',
'line':{'width':1.5,'color':'rgb(25,25,25)'}
},
'opacity':0.6,
}]
my_layout = {
'title':'the most active hacker news',
'titlefont':{'size':30},
'xaxis':{
'title':'Titles',
'titlefont':{'size':24},
'tickfont':{'size':14},
},
'yaxis':{
'title':'Comments',
'titlefont':{'size':24},
'tickfont':{'size':14},
}
}
fig = {'data':data,'layout':my_layout}
offline.plot(fig,filename='hn_sub.html')
三、测试python_repos.py
第三问我不会,所以我引用了 飞翔的大玉米 的答案
四、进一步探索
略