
如何利用 C# 爬取「猫眼电影专业版:票房」数据!
在现代生活中,看电影已经成为大家的一种休闲方式。
前几天,我们介绍了 如何利用 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!