爬虫基础文档讲解(不包含代码)之 “实时票房”网站的爬取

爬虫基础文档讲解(不包含代码)之 “猫眼实时票房”网站的爬取
目标网站:https://xxxxxxx.mxxxxxxaoyan.com/dashboard
可使用的技术:Python、Java
目标资源的分析
  1. 第一步 我们要分析 我们要获取那些 资源,从下面的这个图片我们可以看出,这个网页分了三部分,左面是“电影票房”,右面分了两小部分,分别是上面的 “网络热度” 以及 下面的 “电视收视”。我们今天主要获取 右面的 “电影票房”获取到 1. “影片名称” 2. “综合实时票房” 3. 票房总比 4. 排片场次 这四大块

在这里插入图片描述

好。内容分析完成,我们按下F12 看一下源代码

在这里插入图片描述

发现本应该是数字的地方变成了 “乱码”,不过需要注意的是,这个地方不是乱码那么简单,那么这些字体是从哪里获取到 以及 要怎么显示呢?在想这些问题之前 我们可以先想一下,这个平台是怎么刷新数据的呢?我们打开 “网络”这一栏,看看有没有数据在加载

在这里插入图片描述

在这里插入图片描述

通过等待我们可以看出,这个网站大约每 2-4s会执行一下Ajax 请求,那么我们就可以从这里入手

对于网站ajax请求的分析
  1. 我们来看一下网站的请求
请求网址: https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid=18393488e75c8-0ac6dfec66809d-26021c51-1fa400-18393488e75c8&timeStamp=1664626223628&User-Agent=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwNS4wLjAuMCBTYWZhcmkvNTM3LjM2&index=986&channelId=40009&sVersion=2&signKey=e28dbebe457aa8c917c03d3cad4736d1
请求方法: GET
状态代码: 200 OK
远程地址: 127.0.0.1:7890
引荐来源网址政策: strict-origin-when-cross-origin

可以看到请求的格式以及请求的参数。发现需要的参数 我们把参数单领出来

# 这个是固定参数 应该是排序的
orderType=0
# 这个也是固定写死的
uuid=18393488e75c8-0ac6dfec66809d-26021c51-1fa400-18393488e75c8
# 这个毫无疑问是时间戳
timeStamp=1664626223628
# 这个是当前浏览器的标示 重点我们接下来看一下 这里简单的做一下了解
Use-Agent=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwNS4wLjAuMCBTYWZhcmkvNTM3LjM2
# 这个暂且不清楚是干什么的
index=986
# 下面的三个 接下来做分析时再做讲解
channelId=40009
sVersion=2
signKey=e28dbebe457aa8c917c03d3cad4736d1

在这里插入图片描述

我们通过其中的一个入参找到这个请求是从哪里发送出的。并且打一个断点

在这里插入图片描述

运气不错、一次就命中了。这个时候 我们就要对上面我们不知道的参数进行一个个分析

Use-Agent:
在这里插入图片描述

发现是一个 网络请求标准请求头。但是 我们请求的参数 是

TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwNS4wLjAuMCBTYWZhcmkvNTM3LjM2 这个呀。仔细看我们会发现,有一个 window.btoa 这个属性,这个属性是干嘛的? 这个属性是创建base64 字符的

那我们把

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

放在base64 加密一下就会得到

TW96aWxsYS81LjAlMjAlMjhXaW5kb3dzJTIwTlQlMjAxMC4wJTNCJTIwV2luNjQlM0IlMjB4NjQlMjklMjBBcHBsZVdlYktpdC81MzcuMzYlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyMENocm9tZS8xMDUuMC4wLjAlMjBTYWZhcmkvNTM3LjM2

在这里插入图片描述

结合网站得到的参数会发现一模一样。现在 Use-Agent 这个参数知道了就是 前端base64 转换 后端 解码接受, 我们接着分析

index:

在这里插入图片描述

可以看到没有什么特别深的含义 就是一个 3 位的随机数

channelId:

在这里插入图片描述

我们可以看出n(i) 里面包含的是 pc_browser 所对应的 s这个函数是 在这里插入图片描述
40009 那么我们这个参数也可以完全写死。

sVersion: 这个参数是版本号 也可以完全写死

signKey:

我们的重头戏来了,这个参数 我们接着流程往下走

在这里插入图片描述

可以看到 这个地方有一个加密的地方,参数呢就是我们上面的那些参数。把这个字符复制到 md5 加密哪里对比一下

在这里插入图片描述

在这里插入图片描述

看的出来和我们想的是一样的 sigleKey 都是 37d597b18553f2af29bb2f6adf3c8ad7 我们执行一下 看看是不是 我们的结果

在这里插入图片描述

可以看到和我们上面分析的是一模一样的

至此分析完成了

  1. 网站请求返回的参数

在这里插入图片描述

可以看到 返回的数据中有一个 movieList 集合中有一个 data 。里面存放的就是 要找到的数据。但是呢 很遗憾,有一个 boxSplitUnit 的集合中存放的是 实时的票房,但是可惜被做处理了,我们没有办法直接拿到想要的数据,但是我们看到 再 movieList 上面有一个 fontStyle 的文件。这个正好是上面出现的 字体文件。

在这里插入图片描述

看出来对于上面猜想我们是正确的。然后我们下载这个 woff 文件 并且用 http://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html 解析我们的字体文件

在这里插入图片描述

解析下来我们可以看到 这个网站生成的字符 里面只有这几个文字。我们 通过 boxSplitUnit 这个里面的 “乱码” 和 解析出来的文字一一对应 我们可以得到这个一串数字

 1  6  5  4  3  2  4

解读下来就是 16542.24万元

Ok 这就是获取到了 我们想要的目标数值

总结

这个一串数字

 1  6  5  4  3  2  4

解读下来就是 16542.24万元

Ok 这就是获取到了 我们想要的目标数值

总结

因为最近不想写任何的东西,代码就不写了,可以自己完善一下,总结一下思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值