当我们需要获取公交信息时,我们可以通过调用公交公司提供的数据接口来获取。本文将为大家介绍如何使用Python调用接口获取公交信息。
步骤一:获取API接口
首先,我们需要从公交公司获取数据接口的URL和接口参数。以“杭州公共交通总公司”提供的实时公交线路信息为例,数据获取步骤如下:
- 打开“杭州公交总公司”官网(http://www.hzbus.cn),点击“实时公交信息”。
- 选择需要查询的线路。
- 将浏览器地址栏中的URL中的lineid参数即为API接口的参数之一。
假设我们选择查询杭州地铁1号线的实时公交信息,则该API接口URL为:
http://app.hzbus.cn:8081/wiki/线路.php?id=1
其中,参数id=1即为地铁1号线的线路id。
步骤二:发送HTTP请求获取数据
为了调用API接口,我们可以通过Python的requests库发送HTTP请求。这里我们使用GET请求来获取数据:
import requests
response = requests.get(api_url)
其中,api_url即为API接口的URL。
步骤三:解析获取到的数据
当我们成功获取到数据后,我们需要将其解析为可读取的格式。如果返回的是JSON格式,我们可以使用Python内置的json库解析为Python对象:
import json
data = json.loads(response.text)
如果返回的是XML格式,我们可以使用Python的xml库来解析。
示例一:获取杭州地铁1号线实时公交信息
该示例需要完成以下步骤:
- 获取地铁1号线的线路id
- 构造API接口URL
- 发送HTTP请求获取数据
- 解析数据并输出公交信息
完整代码如下:
import requests
import json
line = "地铁1号线"
# 获取线路id
response = requests.get("http://www.hzbus.cn")
lineid = response.text.split(line)[1].split("<")[0].split("=")[1].strip('\"')
# 构造API接口URL
api_url = "http://app.hzbus.cn:8081/wiki/线路.php?id=" + lineid
# 发送HTTP请求获取数据
response = requests.get(api_url)
# 解析数据并输出公交信息
data = json.loads(response.text)
for bus in data:
print(bus['plate'], bus['time'], bus['distance'])
以上代码将输出地铁1号线各辆公交车的车牌号、到站时间和距离信息。
示例二:获取杭州市指定区公交信息
该示例需要完成以下步骤:
- 构造API接口URL
- 发送HTTP请求并带上参数
- 解析数据并输出公交信息
import requests
import json
# 构造API接口URL
api_url = 'http://api.hzdtouch.cn/base/busarrival/getBusLineArrival'
# 发送HTTP请求并带上参数
params = {
'lineId': 35, # 线路编号
'direction': 0, # 方向
'stationId': 1072 # 站点编号
}
response = requests.get(api_url, params=params)
# 解析数据并输出公交信息
data = json.loads(response.text)
for bus in data['result']['busList']:
print(bus['vehicleId'], bus['arrivalTime'], bus['distance'])
以上代码将输出杭州市某个区指定站点的公交车车牌号、到站时间和距离信息。
以上是通过Python调用接口获取公交信息的完整攻略,大家可以根据自己的需求修改参数调用其他API接口。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 通过调用接口获取公交信息的实例 - Python技术站