python爬取喜马拉雅vip音频_Python简易爬虫教程(三)--爬取喜马拉雅音频

本文介绍了如何使用Python爬虫模拟浏览器登录并抓取喜马拉雅网站上的VIP音频。通过分析网页结构,解决JavaScript隐藏链接问题,并使用requests库的session方法来伪装成浏览器。详细讲解了获取音频链接、解析音频信息和下载音频的步骤,同时提供了多线程和多进程的下载优化方法。
摘要由CSDN通过智能技术生成

上一篇我们重点介绍了如何把爬取到的图片下载下来。没错,如果你还记得的话,我们使用的是urlretrieve这个Python自带的下载模块。所以,到现在,爬虫框架的三个基本组成:获取网页,寻找信息,收集信息,我们已经学习完成。相信大家现在已经可以独立地编写自己的爬虫,爬取自己感兴趣的网站了。

然而,随着不断实践,我们会发现,不是所有网站都是像我们前面爬取的搜狐新闻和新浪图片那样简单的。大部分网站,尤其是内容网站,会对自己的数据进行保护,采取一些反爬虫的措施。最常见的,分以下这几种。

第一种,最简单的呢,是一些网站需要登陆才能访问特定资源。比如微博,知乎,tumblr等等。它需要确定我们的用户身份,才能允许读取我们的数据列表,比如粉丝,关注话题,收藏等等。那么遇到这种情况呢,我们只需要让我们的爬虫模拟浏览器登陆就可以了。哈哈,大家不要忘记啦,这依然属于爬虫的第一个步骤,即,先登陆,再获取网页源代码。所以,我们依然可以使用requests这个库进行模拟登陆,获取代码的操作。这个比较简单,网上随便都可以搜索到两行代码,本节就不再赘述了。

那么第二种,最直接的,也是最有效的。隐藏资源的链接。如图所示,这里的href是一个javascript,在网页源码里不明示。

image

这种情况,需要浏览器监测到我们点击了这个链接,触发这个JavaScript,才会向网站发出一个请求,网站才会反馈给浏览器一个真正的href地址。那么,我们在爬取这一类网页的时候,就要面临一个如何模拟浏览器发出点击请求的问题。这一类的网站很多,典型的特点就是,链接必须单击打开,如果右键在新标签页打开,就会跳转到about:blank空标签页。相信大家又有这样的经历。

image

这种网站,处理的重点在于,弄清楚浏览器发出的请求是什么,网站返回的又是什么。然后我们才能模拟。所以,这一篇教程主要介绍,当我们遇到这种网页的时候,该怎么处理,这样大家能够爬取的网站就会更多了。

我们以爬取喜马拉雅网站上的免费音频为例。

打开专辑的页面。

image

我们尝试使用requests的get,发现出现错误,无法获得网页源代码。这就属于上面说的第一种类型,网站识别到我们是爬虫,阻止我们获取代码。因此,我们使用requests.session, 把自己伪装成浏览器。

page = 'https://www.ximalaya.com/qinggan/209378/' #专辑地址

session = requests.session()#使用session方法

r = session.get(page, headers=headers)

#这个headers就是包含浏览器特征的一些数据,为了将我们伪装成浏览器。

h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值