亚太智媒
关闭

亚太智媒APP, 全新登场!

点击下载

如何利用 C# 爬取「猫眼电影专业版:票房」数据!

文化娱乐

2019-03-03 10:59

在现代生活中,看电影已经成为大家的一种休闲方式。

前几天,我们介绍了 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!,通过这份“热映口碑”榜单,我们可以看到大家对当前热播电影的评价,为我们选择所要观看的电影提供了辅助支持。但仅有这份榜单还是不够的,我们还想知道这些热映电影更详细的数据,比如:“实时票房”、“累积票房”、“票房占比”、“排片占比”、“上座率”等等,以便更好的选择出一部令自己满意的影片,更好的分配自己的娱乐时间。


下面,我就带着大家从“猫眼专业版”的网站上来爬取以上的数据

首先,我们浏览一下“猫眼专业版”的网页,网址如下(选择2019年03月01日的数据):

https://piaofang.maoyan.com/dashboard?date=2019-03-01

原网页

对应的HTML代码如下:

源代码

注:如果需要选择2019年03月02日的数据,只需要调整URL中的date参数值,把2019-03-01换为2019-03-02即可。

其次,我们从源代码中发现div class="movielist"/div部分,并不包含数据,初步断定该网页采用了“前后端分离”的开发方式。故打开浏览器的控制台,确实发现了从服务器请求的JSON数据,请求网址如下:

https://box.maoyan.com/promovie/api/box/second.json?beginDate=20190301

Network

对应的JSON数据如下:

Json数据

我们想要的数据包含在list数组中,如下图所示:

所需数据

这样,我们就找到了所要获取的全部数据


怎样处理JSON数据呢?

我推荐一套处理JSON数据的开源类库Json.NET,通过这套类库可以把得到的JSON数据反序列化成对应的类型。

Json.NET的 Git 网址如下:

https://github.com/JamesNK/Newtonsoft.Json

git

有需要的同学可以到 Git 上下载源码,这里就不过多介绍这个开源类库了。如果大家对Json.NET感兴趣可以在图文下面留言,我会另外写一些图文详细介绍这套类库的源码以及具体应用。


到此为止,网页的分析部分就全部介绍完了,下面我们来看具体的代码部分:

1. 定义存储电影的结构Film。包括“编号、名称、实时票房、总票房票房占比、排片占比、上座率”等等。

2. 根据URL得到包含电影数据的JSON。

3. 为反序列化该JSON定义对应的结构。

这块定义的结构与JSON的格式相对应,可以结合上面JSON数据的图来看。

4. 反序列化JSON到对应的类中,并得到存储电影数据的链表。

5. Markdown 格式化输出爬取的“猫眼电影专业版:票房”的数据

6. 把Markdown格式的文本渲染成HTML格式的文本。

渲染文本


最后,总结一下。

我们以分析“猫眼电影专业版”的网页为基础,得知该网页采取了“前后端分离”的开发方式,于是我们先得到了存储信息的JSON数据,并利用Json.net类库对其反序列化,得到对应的类,从而完成了整个网页的爬取过程。

是不是很有趣,大家也来试试吧!今天就到这里了,See You!