python爬虫——爬取喜马拉雅app
2019-06-14 12:53
741 查看
主要爬取喜马拉雅悬疑栏目的小说名字,演播者以及简介,先上爬取的数据图。
1. 此次抓取使用fiddler抓包,喜马拉雅的抓包很简单,这里就不多阐述。
通过对比两条的url可以发现只有ts-时间戳和pageId不同,其他的都没变化,因此可以知道,改变pageId就可以实现翻页。另外最上面的url是我去除一些不必要的参数,其没有影响。
2. 分析数据
小说是存储在列表当中的,所以需要先取出这个列表,再遍历获取小说的信息。
# 访问的url url = 'http://mobile.ximalaya.com/mobile/discovery/v2/category/metadata/albums?categoryId=49&device=android' \ '&keywordId=232&metadatas=&operator=2&pageId=1&pageSize=20&scale=1&version=6.5.87' # 请求url获得返回的数据是json格式 resp = requests.get(url, headers=headers).json() # 获取数据存储的列表 datas = resp.get('list') # 判断列表是否不为空 if datas: for data in datas: # 声明一个字典存储数据 data_dict = {} # 获取演播者的名字 nickname = data.get('nickname') # 获取小说的名字 title = data.get('title') # 获取小说简介 trackTitle = data.get('trackTitle') data_dict['nickname'] = nickname data_dict['title'] = title data_dict['trackTitle'] = trackTitle print(data_dict)
3. 然后便是将数据保存,data_list是全局变量,详细请看后面的全代码
# 将数据保存为json文件 with open('data_json.json', 'w', encoding='utf-8') as f: json.dump(data_list, f, ensure_ascii=False, indent=4) print('json文件保存成功') # 将数据保存为csv文件 # 表头 title = data_list[0].keys() with open('data_csv.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, title) # 写入表头 writer.writeheader() # 批量写入数据 writer.writerows(data_list) print('csv文件保存成功')
4. 全部代码附上
import requests import csv import json # 构建请求头 headers = { 'Accept': '*/*', 'user-agent': 'ting_6.5.87(HRY-AL00T,Android28)', 'Host': 'mobwsa.ximalaya.com', 'Connection': 'Keep-Alive', 'Accept-Encoding': 'gzip' } # 声明一个列表存储字典 data_list = [] # 请求url并获取数据函数 def get_index(): page = 1 while True: # 访问的url url = 'http://mobile.ximalaya.com/mobile/discovery/v2/category/metadata/albums?categoryId=49&device=android' \ '&keywordId=232&metadatas=&operator=2&pageId={}&pageSize=20&scale=1&version=6.5.87'.format(page) # 请求url获得返回的数据是json格式 resp = requests.get(url, headers=headers).json() # 获取数据存储的列表 datas = resp.get('list') if datas: get_info(datas) else: break page += 1 # 获取想要数据函数 def get_info(datas): for data in datas: # 声明一个字典存储数据 data_dict = {} # 获取演播者的名字 nickname = data.get('nickname') # 获取小说的名字 title = data.get('title') # 获取小说简介 trackTitle = data.get('trackTitle') data_dict['nickname'] = nickname data_dict['title'] = title data_dict['trackTitle'] = trackTitle data_list.append(data_dict) print(data_dict) # 保存文件函数 def save_file(): # 将数据保存为json文件 with open('data_json.json', 'w', encoding='utf-8') as f: json.dump(data_list, f, ensure_ascii=False, indent=4) print('json文件保存成功') # 将数据保存为csv文件 # 表头 title = data_list[0].keys() with open('data_csv.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, title) # 写入表头 writer.writeheader() # 批量写入数据 writer.writerows(data_list) print('csv文件保存成功') def main(): get_index() save_file() if __name__ == '__main__': main()
相关文章推荐
- 【Python有趣打卡】微博APP榜单爬虫,尽知天下事(二)
- Fiddler抓包---手机APP--python爬虫 基本设置和操作
- Python 爬虫APP URL
- Python爬虫入门教程 48-100 使用mitmdump抓取手机惠农APP-手机APP爬虫部分
- 「docker实战篇」python的docker爬虫技术-python脚本app抓取(13)
- Python 爬虫喜马拉雅
- Python爬虫:抓取手机APP的数据
- Python爬虫抓取手机APP的传输数据
- Python爬虫入门教程 29-100 手机APP数据抓取 pyspider
- Python爬虫:抓取手机APP的传输数据
- Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫
- 使用python/casperjs编写终极爬虫-客户端App的抓取-ZOL技术频道
- Python3+scrapy 爬取喜马拉雅音乐 音乐和歌名 最简单的爬虫
- 最新《Python爬虫工程师开发App数据抓取教程》
- Python爬虫:抓取手机APP数据
- 「docker实战篇」python的docker爬虫技术-fiddler分析app抓取(12)
- Python 爬虫工程师必学 App数据抓取实战
- 都说Python是无所不能的!手机APP数据就能逃出我爬虫的魔爪吗?
- Python爬虫:抓取手机APP的数据
- 使用python/casperjs编写终极爬虫-客户端App的抓取