龙空技术网

python--使用 Web API获取网页信息

ZhangYiHui 278

前言:

现在姐妹们对“python获取当前页面浏览器的url”都比较讲究,同学们都需要知道一些“python获取当前页面浏览器的url”的相关文章。那么小编在网络上收集了一些有关“python获取当前页面浏览器的url””的相关内容,希望兄弟们能喜欢,看官们快快来了解一下吧!

'''

本章中,将学习如何编写一个独立的程序,并对其获取的数据进行可视化。这个程序将使用web应用编程接口(API)自动请求网站的特定信息而不是整个网页,在对这些信息进行可视化。由于这样编写的程序时钟使用最新的数据来生成可视化,因此即便数据瞬息万变,它呈现的信息也都是最新的。

'''

1 使用Web API

'''Web API 是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。请求的数据将以易于处理的格式(如JSON或CSV)返回。依赖于外部数据源的大多数应用程序都依赖于API调用,如集成社交媒体网站的应用程序。'''

1.1 Git和GitHub

'''本章的可视化将基于来自GitHub的信息,这是一个让程序员能够协作开发项目的网站。我们将使用GitHub的API来请求有关该网站中Python项目的信息,然后使用Pygal生成交互式可视化,以呈现这些项目的受欢迎程度。GitHub的名字源自Git,Git是一个分布式版本控制系统,让程序员 团队能够协作开发项目。

'''

1.2 使用API调用请求数据

'''GitHub的API让你能够通过API调用来请求各种信息。要知道API调用是什么样的,请在浏览器的地址栏中输入如下地址并按回车键:

'''

1.3 安装requests

requests包让python程序能够轻松地向网站请求信息以及检查返回的响应。要安装requests,请

执行类似于下面的命令:

pip install  requests
1.4 处理API响应及响应字典

'''下面来编写一个程序,它执行API调用并处理结果,找出GitHub上星级最高的Python项目:'''

import requests# 执行API调用并存储响应url = ';r = requests.get(url)print("status code:",r.status_code)# 将API响应存储在一个变量中response_dict = r.json()#使用方法json将将这些信息转换为python字典print(response_dict.keys())#打印response_dict中的键#打印与total_count相关的值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)Status code: 200dict_keys(['total_count', 'incomplete_results', 'items'])status code: 200dict_keys(['total_count', 'incomplete_results', 'items'])total repositories: 8762437Repositories returned: 30keys: 78allow_forkingarchive_urlarchivedassignees_urlblobs_urlbranches_urlclone_urlcollaborators_urlcomments_urlcommits_urlcompare_urlcontents_urlcontributors_urlcreated_atdefault_branchdeployments_urldescriptiondisableddownloads_urlevents_urlforkforksforks_countforks_urlfull_namegit_commits_urlgit_refs_urlgit_tags_urlgit_urlhas_downloadshas_issueshas_pageshas_projectshas_wikihomepagehooks_urlhtml_urlidis_templateissue_comment_urlissue_events_urlissues_urlkeys_urllabels_urllanguagelanguages_urllicensemerges_urlmilestones_urlmirror_urlnamenode_idnotifications_urlopen_issuesopen_issues_countownerprivatepulls_urlpushed_atreleases_urlscoresizessh_urlstargazers_countstargazers_urlstatuses_urlsubscribers_urlsubscription_urlsvn_urltags_urlteams_urltopicstrees_urlupdated_aturlvisibilitywatcherswatchers_count
1.5概述最受欢迎的仓库

对这些数据进行可视化时,我们需要涵盖多个仓库。下面就来编写一个循环,打印API调用返回的每个仓库的特定信息,以便能够在可视化中包含所有这些信息:

--snip--# 研究有关仓库的信息repo_dicts = response_dict['items']print('Repositores returned:',len(repo_dicts))print('\nSelected information about each repository:')for repo_dict in repo_dicts:    print('\nName:',repo_dict['name'])    print('Owner:',repo_dict['owner']['login'])    print('Stars:',repo_dict['stargazers_count'])    print('Repository:',repo_dict['html_url'])    print('Created:',repo_dict['created_at'])    print('Updated:',repo_dict['updated_at'])    print('Description:',repo_dict['description'])
1.6 监视API的速率限制
大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。要获悉你是否接近了GitHub的限制,请在浏览器中输入:
2.使用pygal可视化仓库

'''有了一些有趣的数据后,我们来进行可视化,呈现GitHub上python项目的受欢迎程度。我们将创

建一个交互式条形图:条形的高度表示项目获得了多少颗星。单击条形将带你进入项目在GitHub

上的主页。

'''

import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS,LightStyle as LS# 执行API调用并存储响应url = ";r = requests.get(url)print("Status code",r.status_code)# 将API响应存储在一个变量中response_dict = r.json()# 研究有关仓库信息response_dicts = response_dict['items']names,stars = [],[]for repo_dict in response_dicts:    names.append(repo_dict['name'])    stars.append(repo_dict['stargazers_count'])# 可视化my_style = LS(c= '#333366', base_style = LCS)#将基色设置为深蓝色chart = pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False)#让标签绕x轴旋转45度,隐藏图例chart.title = "Most-Starred Python Projects on GitHub"chart.x_labels = nameschart.add('',stars)chart.render_to_file('python_repos.svg')

image.png

改进pygal图表

改进图表样式,进行多个定制,先微调整体代码结构,创建一个配置对象,在其中包含要传递给Bar()的所有定制:

import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS,LightStyle as LS# 执行API调用并存储响应url = ";r = requests.get(url)print("Status code",r.status_code)# 将API响应存储在一个变量中response_dict = r.json()# 研究有关仓库信息response_dicts = response_dict['items']names,stars = [],[]for repo_dict in response_dicts:    names.append(repo_dict['name'])    stars.append(repo_dict['stargazers_count'])#可视化my_style = LS(c= '#333366', base_style = LCS) # 定义条形图中条形的底色为蓝色和base_style灰色my_config = pygal.Config() # 创建PygalConfig的实例,修改my_config,可定制图表外观。my_config.x_label_rotation = 45 # X轴标签,绕x轴顺时针45°旋转my_config.show_legend = False # 隐藏图例my_config.title_font_size = 24 # 标题大小my_config.label_font_size = 14 # X轴、y轴标签字体大小my_config.major_label_font_size = 18 # y轴标签上刻度字体大小my_config.truncate_label = 15 # X轴标签长度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 = nameschart.add("",stars)chart.render_to_file("python_repos_new.svg")

image.png

添加自定义工具提示

'''在Python中,将鼠标指向条形将显示它表示的信息,这通常称为:工具提示。在上面实例中,显示的是项目获得了多少个星。下面创建自定义工具提示,显示项目描述:

示例:下面可视化前三个项目,并给每个项目对应的条形都指定自定义标签。为此,我们想add()传递一个字典列表,而不是值列表:

'''

import pygalfrom pygal.style import LightColorizedStyle as LCS,LightenStyle as LSmy_style = LS('#333366',base_style=LCS)chart = pygal.Bar(style=my_style,x_label_rotation=45,show_legend=False)chart.title = 'Python Projects'chart.x_labels = ['httpie','django','flask']plot_dicts = [    {'value':16101,'label':'Description of httpie.'},    {'value':15028,'label':'Description of diango.'},    {'value':14798,'label':'Description of flask.'},    ]chart.add('',plot_dicts)chart.render_to_file('bar_description.svg')

image.png

根据数据绘图及在图表中添加可单击的链接

import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS, LightenStyle as LS # 执行API调用并存储响应url = ';r = requests.get(url)# 状态为200表示访问成功print("Status code:", r.status_code)# 探索有关仓库的信息repo_dicts = response_dict['items'] names, plot_dicts = [], []for repo_dict in repo_dicts:    names.append(repo_dict['name'])        plot_dict = {'value':repo_dict['stargazers_count'],#value表示星数                  'label':repo_dict['description'],#label存储项目                  'xlink':repo_dict['html_url'],#添加可单击的链接                 }    plot_dicts.append(plot_dict)        my_style = LS('#333366', base_style=LCS)my_config = pygal.Config()my_config.x_label_rotation = 45my_config.show_legend = Falsemy_config.truncate_label = 15my_config.title_font_size = 24my_config.label_font_size = 14my_config.major_label_font_size = 18my_config.truncate_label = 15my_config.show_y_guides=Falsemy_config.width = 1000chart = pygal.Bar(my_config, style=my_style) chart.title = "Most-Starred Java Projects on GitHub"chart.x_labels = nameschart.add('', stars)chart.render_to_file('python_repos.svg')

标签: #python获取当前页面浏览器的url