Python爬虫音频数据

一:前言

本次爬取的是喜马拉雅的热门栏目下全部电台的每个频道的信息和频道中的每个音频数据的各种信息,然后把爬取的数据保存到mongodb以备后续使用。这次数据量在70万左右。音频数据包括音频下载地址,频道信息,简介等等,非常多。

昨天进行了人生中第一次面试,对方是一家人工智能大数据公司,我准备在这大二的暑假去实习,他们就要求有爬取过音频数据,所以我就来分析一下喜马拉雅的音频数据爬下来。目前我还在等待三面中,或者是通知最终面试消息。 (因为能得到一定肯定,不管成功与否都很开心)

二:运行环境

  • IDE:Pycharm 2017
  • Python3.6
  • pymongo 3.4.0
  • requests 2.14.2
  • lxml 3.7.2
  • BeautifulSoup 4.5.3

三:实例分析

1.首先进入这次爬取的主页面 http://www.ximalaya.com/dq/all/ ,可以看到每页12个频道,每个频道下面有很多的音频,有的频道中还有很多分页。抓取计划:循环84个页面,对每个页面解析后抓取每个频道的名称,图片链接,频道链接保存到mongodb。

热门频道

2.打开开发者模式,分析页面,很快就可以得到想要的数据的位置。下面的代码就实现了抓取全部热门频道的信息,就可以保存到mongodb中。

分析频道

3.下面就是开始获取每个频道中的全部音频数据了,前面通过解析页面获取到了美国频道的链接。

比如我们进入 http://www.ximalaya.com/6565682/album/237771 这个链接后分析页面结构。可以看出每个音频都有特定的ID,这个ID可以在一个div中的属性中获取。使用split()和int()来转换为单独的ID。

频道页面分析

4.接着点击一个音频链接,进入开发者模式后刷新页面然后点击XHR,再点击一个json链接可以看到这个就包括这个音频的全部详细信息。

音频页面分析

5.上面只是对一个频道的主页面解析全部音频信息,但是实际上频道的音频链接是有很多分页的。

分页

6.全部代码

完整代码地址 github.com/rieuse/learnPython

7.如果改成异步的形式可以快一点,只需要修改成下面这样就行了。我试了每分钟要比普通的多获取近100条数据。这个源代码也在github中。

异步

五:总结

这次抓取的数据量在70万左右,这些数据后续可以进行很多研究,比如播放量排行榜、时间区段排行、频道音频数量等等。后续我将继续学习使用科学计算和绘图工具来进行数据分析,清洗的工作。

狙击手 http://www.cnblogs.com/jiaoyu121/p/7045746.html

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

“杀”一个程序员不需要用枪,改三次需求就可以了!

在很多软件公司,特别是一些创业型的团队中,对于这样的情景可能大家都很熟悉:项目经理或者产品经理(产品狗)口头或者简单记录一下软件产品的大致要做的功能,直接就让研...

14310
来自专栏IT大咖说

手无寸铁,如何强硬又体面地落地中间件

内容来源:2017 年 12 月 03 日,找钢网资深架构师刘星辰在“IAS2017互联网架构峰会”进行《手无寸铁,如何强硬又体面地落地中间件》演讲分享。IT ...

13630
来自专栏BestSDK

【刷脸登陆】 一种毋须动用大脑皮层的登录方式

一登是啥? 一登是一家人脸登录服务提供商,以开发组件的形式,为 Android、iOS 应用开发者提供人脸登录功能接入服务。用户不需要记住很多密码,因为人脸就是...

244100
来自专栏SDNLAB

SDN实战团分享(十四):网络设备自动化遇到的问题与思考

我一直是做网络的,而且是大家常说的物理网工。 干了16年。虽然,刚刚毕业哪会干了几年的DBA 和SA 的工作。后来就一直在做网络。 企业网,城域网,骨干网都算是...

41560
来自专栏WeTest质量开放平台团队的专栏

月活8.89亿背后:微信工程师细数兼容测试经验

2017年4月,企鹅智酷公布了最新的《2017微信用户&生态研究报告》。报告数据显示,截止到2016年12月微信全球共计8.89亿月活用户,新兴的公众号平台拥有...

19530
来自专栏ThoughtWorks

#TW对话# 王秋:渐进增强在移动开发中应用

王秋:渐进增强在移动开发中应用 在2012年6月召开的百度开发者大会西安站上,来自ThoughtWorks的前端工程师王秋(@Sheldon-秋 ),进行了题为...

35970
来自专栏北京马哥教育

Linux大牛分享7道面试题告诉你秒收 offer 的技巧

笔者其实没有想到去面试,只是在智联上更新了一下简历,就陆陆续续接到很多猎头的邮件和电话,实在是没准备好要去面试,就推掉了几家公司的面试了。正因为笔者也很久没有面...

477100
来自专栏云计算D1net

轻松几步搭建你的私有云

私有云增加了IT的灵活性,帮助前端用户实现自助式服务。许多企业通往私有云的过程是从虚拟化起步的。从这种角度看,私有云主要是额外增加了一层灵活性,让用户可以自行部...

71350
来自专栏LiveEdu在线科技教育平台

LiveEdu中文教程项目分享(2)

在过去的两周里,报名参加LiveEdu中文项目创建者招募计划 的用户人数在不断增加。我们非常感谢项目创建者们对我们平台的支持。我们明白,每一个项目都是项目创建者...

10150
来自专栏BestSDK

想用APP创业,那你要明白API的重要性?

每一家初创企业和公司都会有提供给世界的接口。有的接口超级简单,比如Google—你能做的只有搜索;有的复杂一点,比如在Amazon上面买东西—你可以浏览、搜索、...

34490

扫码关注云+社区

领取腾讯云代金券