Web交互

阅读: 5275     评论:1

很多网站都有公开的API,通过JSON或者其它格式提供数据服务。我们可以利用Python的requests库来访问这些API。Anaconda环境中默认已经安装好了requests,如果你的环境中,没有安装这个包的话,可以通过pip或者conda进行安装:

pip install requests
conda install requests

下面我们以获取Github上最新的30条关于pandas的问题为例,介绍如何与Web API交互。

In [113]: import requests # 导入包

In [114]: url = 'https://api.github.com/repos/pandas-dev/pandas/issues' # 要访问的url

In [115]: response = requests.get(url) # 访问页面,需要等待一会

In [116]: response # 成功获取响应的数据
Out[116]: <Response [200]>

In [117]: data = response.json() # 解析为json格式

In [118]: data[0]['title'] # 查看第一个问题的标题
Out[118]: 'python-project-packaging-with-pandas'

data中的每个元素都是一个包含Github问题页面上的所有数据的字典(注释除外)。

In [119]: data[0]
Out[119]:
{'url': 'https://api.github.com/repos/pandas-dev/pandas/issues/24779',
 'repository_url': 'https://api.github.com/repos/pandas-dev/pandas',
 'labels_url': 'https://api.github.com/repos/pandas-dev/pandas/issues/24779/labels{/name}',
 'comments_url': 'https://api.github.com/repos/pandas-dev/pandas/issues/24779/comments',
 'events_url': 'https://api.github.com/repos/pandas-dev/pandas/issues/24779/events',
 'html_url': 'https://github.com/pandas-dev/pandas/issues/24779',
 'id': 399193081,
 'node_id': 'MDU6SXNzdWUzOTkxOTMwODE=',
 'number': 24779,
 'title': 'python-project-packaging-with-pandas',
 ......后面省略

我们可以将data直接传给DataFrame,并提取感兴趣的字段:

In [120]: issues = pd.DataFrame(data, columns= ['number','title','labels','state'])

In [121]: issues
Out[121]:
    number  ...  state
0    24779  ...   open
1    24778  ...   open
2    24776  ...   open
3    24775  ...   open
4    24774  ...   open
..     ...  ...    ...
25   24736  ...   open
26   24735  ...   open
27   24733  ...   open
28   24732  ...   open
29   24730  ...   open

上面我们截取了'number','title','labels','state'四个字段的内容,并构造了DataFrame对象,下面就可以利用pandas对它进行各种操作了!


 EXCEL文件 数据库交互 

评论总数: 1


点击登录后方可评论

urllib.request 加 json 模块也可以实现。