第一次爬虫案例

               最近爬取了一个音频直播的网站,我们从中提取,直播的标题名称,音频源的地址;

爬虫的基本流程:
1、发起请求通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应
获取响应内容如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型
2、什么是Request,Response
浏览器发送消息给网址所在的服务器,这个过程就是Request(请求)
服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是Response(响应)
浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示
Request中包含什么?
请求方式
主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS
GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在头部
GET:向指定的资源发出请求“资源”的请求。
POST:向指定资源提交数据,请求服务器进行处理,这个请求可能会创建新的资源或修改现有资源。
请求URL
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三个部分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的主机IP地址(有时也包括端口号)。第三部分是主机资源的具体地址,如目录和文件名等。
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。
请求头
包含请求时的头部信息,如User-Agent,Host,Cookies等信息
在这里插入图片描述
请求体
请求是携带的数据,如提交表单数据时候的表单数据(POST)
Response中包含了什么
所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。
响应状态
有多种响应状态,如:200代表成功,301跳转,404找不到页面,502服务器错误
1xx消息——请求已被服务器接收,继续处理
2xx成功——请求已成功被服务器接收、理解、并接受
3xx重定向——需要后续操作才能完成这一请求
4xx请求错误——请求含有词法错误或者无法被执行
5xx服务器错误——服务器在处理某个正确请求时发生错误
响应头
如内容类型,类型的长度,服务器信息,如下图
在这里插入图片描述

下面我们就来分析网页了:
在这里插入图片描述
我们查看“北京”的元素定位是在:div,“爷爷”id=home-tags下面的“爸爸”ul 下面的 li标签下的 a标签

这一步我们提取出来地域分布的省市信息:
在这里插入图片描述

第一步已经完成,
第二步接下来我们要进入到每个省市下面去提取每个电台的信息:

在这里插入图片描述

  1. 分析网页,我们得到电台名称元素的位置:div 下面的ul 下面的li标签下的a 标签;

在这里插入图片描述

  1. 进入每个电台提取mp3的音频源的地址,但是我们查看网页源码发现,音频是通过js异步加载的。所以我们要怎么破这个js成为了我们的关键;

在这里插入图片描述

我们一步一步抽丝剥茧:
我们通过抓包对比发现,stream_qtid的值是变化,那我们可以把stream_qtid设置成变量,再提取到stream_qtid的值拼接上https://lhttp.qingting.fm/live/stream_qyid/64k.mp3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好了,既然思路有了,也找到解决的方法了,那接下来我们怎么解析这js呢?

在这里插入图片描述

分析请求头中我们可以发现URL地址中的最后一个值与我们前面抓取到每个省市电台名称时的URL中最后的值是一样,(因为这个页面是从上一个页面过来的。)
找到了URL的规律,那么下面我们来解字符串:
在这里插入图片描述

在这里插入图片描述

代码中:entry_script[3]从上图可以看出我们要解析的JavaScript代码是在位置3;
Get_text()[31:57]这段代码表示我们要从JavaScript
/* <![CDATA[ */ var wnd_api ={"api_nonce":"90dae87b12"}; /* ]]> /的代码中提取出请求头{“api_nonce”:“90dae87b12”};的位置,注意 / <![CDATA最前面有空格!!!

在这里插入图片描述
接下来我们把URL拼接然后把解析出来的数据放进header请求头中发起请求:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
万一遇到电台没有音频直播怎么办呢?这个时候我们就需要做一个异常的处理!
最后拼接音频源URL地址

在这里插入图片描述

最后来成功的图片!(注意存储数据的类型!)

在这里插入图片描述
评论+关注,源码奉上!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章