python爬虫——爬取喜马拉雅app
主要爬取喜马拉雅悬疑栏目的小说名字,演播者以及简介,先上爬取的数据图。
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'] = nicknamedata_dict['title'] = titledata_dict['trackTitle'] = trackTitleprint(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 = 1while True:# 访问的urlurl = '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:breakpage += 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'] = nicknamedata_dict['title'] = titledata_dict['trackTitle'] = trackTitledata_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相关推荐
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- Python爬虫爬取手机APP的数据
1.抓取APP数据包 方法详细可以参考这篇博文:http://my.oschina.net/jhao104/blog/605963 得到超级课程表登录的地址:http://120.55.151.61/ ...
- Python爬虫爬取微信朋友圈的方法,感兴趣的朋友可以了解下
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 小雨 | 作者 python教程 | 来源 接下来,我们将实现微信朋友圈的 ...
- Python爬虫爬取微信朋友圈
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...
- Python爬虫爬取美女写真实例
Python爬虫爬取美女写真实例 微信关注公众号:夜寒信息 致力于为每一位用户免费提供更优质技术帮助与资源供给,感谢支持! 这是我写的一个较为简单的爬虫代码,用于爬取美女写真(咳咳,当然是正规 ...
- python爬虫爬取微信公众号小程序信息
python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...
- 在当当买了python怎么下载源代码-python爬虫爬取当当网
[实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...
- python爬虫代码实例-Python爬虫爬取百度搜索内容代码实例
这篇文章主要介绍了Python爬虫爬取百度搜索内容代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 搜索引擎用的很频繁,现在利用Python爬 ...
- python爬虫数据分析可以做什么-python爬虫爬取的数据可以做什么
在Python中连接到多播服务器问题,怎么解决你把redirect关闭就可以了.在send时,加上参数allow_redirects=False 通常每个浏览器都会设置redirect的次数.如果re ...
最新文章
- FPGA之道(26)VHDL初始化
- amd一点也不yes_最不值得买的高端显卡!RTX3080从真香变成了鸡肋?
- C# 字符串操作:split、substring、Format
- HDU2009 求数列的和【迭代】
- POJ NOI0105-41 数字统计
- python是什么意思-python是什么
- 安卓开发之刮刮乐实例教程
- php 保存文件并换行,php是怎样向文件中写入换行_后端开发
- 软件测试每日例会,每日例会(二).md
- vss 迁入后,服务器上面的文件没有变化,VSS迁移
- python绘制多段数码管
- CF1132D Stressful Training Solution
- eovs实训报告总结心得_实训报告心得体会
- Java 小例子:分解质因数
- 用5v1a的充电器给1.2v的镍氢电池充电(充满后可自动断电)或者可以定时
- 第38.1节 osg加载大tif-编译vpb
- linux怎么添加用户并赋予root权限
- 用EDA处理蛋白质数据小记
- git从远程下载项目到本地以及本地提交远程
- 汽车系统升级更新,诺威达k2201升级包,2022年11月7日,刚更新的