爬虫——喜马拉雅-话说明朝播放列表

作者:MINUS大大

最近在深度学习python之余在听明史,大宇茶馆讲的明史是真好啊——听朱元璋打天下、听朱棣造反、听嘉靖皇帝与文官斗智斗勇,贼上瘾。
然后今天我突然想到——可以拿大宇茶馆的明史系列当一次爬虫练手
而这次爬虫练习只是想爬取这些成语标题+链接,并不想抓取背后的音频文件(因为这个播放列表本就是免费的,其实在APP听就挺好的)。

熟悉

来一起看下喜马拉雅的网页样子:

爬虫——喜马拉雅-话说明朝播放列表_第1张图片

思路划重点:

  • 红框部分是播放链接
  • 点上边就会进入播放页面——也就是含有内部url链接
  • 抓当前页面的列表部分
  • 得到名称及链接

抓取尝试方式——1

网页如下

爬虫——喜马拉雅-话说明朝播放列表_第2张图片
在网页端element下有名字及href,因此尝试直接抓取:
爬虫——喜马拉雅-话说明朝播放列表_第3张图片
得到的答案是:有响应,但是没有内容。

抓取尝试方式——2

因此尝试用XHR的方法,即:Network-XHR-Headers中看数据请求链接,和在preview中查看结构再层层抓取。

1思考思路
爬虫——喜马拉雅-话说明朝播放列表_第4张图片
2观察结构
爬虫——喜马拉雅-话说明朝播放列表_第5张图片
观察结构后,撰写代码如下:
爬虫——喜马拉雅-话说明朝播放列表_第6张图片
可是呢,仍然为空,代码错误是:11行json不对,但是我确定json语句是这么写的,那错误在哪儿那?
在这里插入图片描述

代码错误是为什么呢?后来发现是因为喜马拉雅拒绝python爬虫的,因此需要做一定伪装。
即Headers的加载。以下是一个伪装的headers

headers={
'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3578.98 Safari/527.36'
}

当这些都解决了后,完成了该页面的抓取:

爬虫——喜马拉雅-话说明朝播放列表_第7张图片
这个播放列表300多集,播音员的工作也不容易呀。

后续

抓这个列表有什么作用呢?
喜马拉雅是能收藏的,但是收藏完了后在APP翻也是需要时间的,而且经常分心,下次看到完结的,不错的,可以抓取下来存好了。按系列听起来。不怕广告及其他分神。
此外感谢爱德老师帮忙分析遇到问题。


The End

你可能感兴趣的:(成长类,#,Python,python,爬虫,XHR,MINUS,数据处理)