Python-调用百度旅游API接口数据解析(入门级)

最近开始自学python爬虫

import requests#调用申请库(仅用到的一个)
city_name = input('请输入您要查询的城市名称:')##获取用户输入要查询的城市名
url = f'http://api.map.baidu.com/telematics/v3/travel_city?location={city_name}&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&output=json'##起始地址
headers = {
    'User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)'
}##请求头(非真实)
print(f'起始页地址已获取,即将查询城市名:{city_name}')##输出语句,装饰作用
response = requests.get(url,headers=headers).json()#请求返回json格式的数据,一个大字典,数据较为繁杂如下图,别急,慢慢解剖就是了。

##主结构数据解析,图片里天气俩字是错的,应该为旅游,另外图片里没有注明最外层的大词典,实际结构为五层。##
主结构数据解析,图片里天气俩字是错的,应该为旅游,另外图片里没有注明最外层的大词典,实际结构为五层。


    #####第一层信息
status = response['status']##获取数据返回状态
up_date = response['date']###获取数据发布日期
print('◆’*50)###此处为分割线,装饰作用
print(f"数据返回状态'{status}',数据发布日期'{up_date}'")###输出语句,基本也是绿叶
results = response['result']####一个字典,准备解析
###第二层信息
city_id = results['cityid']##获取城市ID
name = results['cityname']###获取城市名称,
location = results['location']###获取到一个字典,包含经纬度,直接用了
city_star = results['star']##获取城市评级
city_link = results['url']###获取城市旅游网址
abstract = results['abstract']###获取城市概要
description = results['description']####获取城市简介
itineraries = results['itineraries']####城市旅游信息详情,进一步进行解析,一个列表包含四个字典
print('☀*50')###此处为分割线,
print(f'初步解析数据:\n城市名称:{name}\n城市ID:{city_id}\n地理经纬度:{location}\n城市星级评价:{city_star}\n城市概要:{abstract}\n城市简介:{description}')###此处输出语句
#####第三层信息,需要进行遍历
for detail_it in itineraries:####准备开启遍历大法
    detail_name = detail_it['name']#获取旅行主题(也就是一日游还是三日游还是几日游)
    detai_desc =detail_it['description']#获取旅行简介
    second_it = detail_it['itineraries']#获取旅行推荐详细信息,列表嵌套字典,嵌套的字典数量根据旅游日程不同而有差,准备解析
    trip_days = len(second_it)  ###len()函数可以提取到是几日游
    print(f"当前城市推荐的旅游攻略{detail_name},{detai_desc}")#输出几日游简介
    ####第五层信息
    print('☺'*50)###此处为分割线,以分割不同的几日游路线
    for idx,trip_detail in enumerate(second_it):##准备遍历大法
        trip_path = trip_detail['path']#又一个列表嵌套字典,我感觉里边的信息用处不大,打开参考一下吧
        trip_desc = trip_detail['description']##获取行程详细介绍
        trip_dine = trip_detail['dinning']#获取行程餐饮推荐
        trip_acc = trip_detail['accommodation']##获取行程住宿推荐
        print(f'☞{trip_days}日游行程')##输出几日游
        print(f'第▼{idx + 1}▼天')#输出具体第几天
        print(f"{trip_desc}\n{trip_dine}\n{trip_acc}")#输出每日活动详情

效果如下也可以在外层加一个while True循环,就可以重复查询不同城市了。
ps:
不知道有没有bug…
#end()

发布了12 篇原创文章 · 获赞 22 · 访问量 3256

猜你喜欢

转载自blog.csdn.net/bosslay/article/details/88260221
今日推荐