当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

猫眼app怎么看票房排行看这里!如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!

以前我写过爬猫眼电影数据的画。

如何使用C#获取“猫眼电影专业版:票房”数据?如何利用C#获取《猫眼电影:人气口碑目录》及其电影信息?如何利用C#获取《猫眼电影:最值得期待的目录》及其电影信息?今天是爬猫眼电影数据的最后一张图,以后的计划是爬上用户评论关于热门电影的数据,进行自然语言处理方面的算法实现和可视化。


好了,我们开始吧!

首先,我们看一下「猫眼电影:国内票房榜」对应的网页。

网址为:

网页

其次,我们看一下该网页对应的源码。

网页源码

从以上源码中,我们可以发现所有的数据全部存储在 dd 标签内,通过 dd 标签内的 p 标签,可以得到“上映时间”、“主演”、“实时票房”、“总票房”的数据,通过 dd 标签内的 a 标签可以得到“电影名称”,以及通过该 a 标签的 href 属性,可以得到对应电影详细信息的网址,上例中对应的网址为:

电影详情页

接着,我们看一下电影详情页的源码。

网页源码

从上面的源码中,我们发现“电影类型”存储在 li .ellipsis 类中,“电影简介”存储在 dra 类中。只要我们得到爬取网页的 HTML DOM TREE 就可以通过相应的标签和类找到对应的数据。

这里值得注意的是,猫眼电影采取了反爬虫机制对“实时票房”、“总票房”进行了加密处理。我们查找 stonefont 类,发现 猫眼电影 使用 font-face 定义字符集,并通过 unicode 去映射展示,所以我们在网页上看到的是数字,但是在源码中看到的却是别的字符。

font-face

字体编码

如何破解猫眼电影的反爬虫机制呢?我下周二会发布技术图文 《如何利用 C# + Python 破解猫眼电影的反爬虫机制?》来介绍。这里暂且搁置一下。

最后,我们用 Jumony 这套开源代码来获取网页对应的 HTML DOM TREE ,这套开源代码可以在 Github 上下载。下载地址为:

Jumony下载

这里对 Jumony 就不做过多介绍了,要是大家感兴趣,可以在图文下方留言,我后面再写几篇图文来介绍这个工具。


以上对「猫眼电影:国内票房榜」以及对应影片详情的网页进行了详细的分析,也确定了使用的开源工具,下面我们看看具体的代码。

1. 构建存储电影信息的结构Film

public class Film { /// <summary> /// 获取或设置 排名 /// </summary> public int Num { get; set; } /// <summary> /// 获取或设置 名称 /// </summary> public string MovieName { get; set; } /// <summary> /// 获取或设置 类型 /// </summary> public string Type { get; set; } /// <summary> /// 获取或设置 主演 /// </summary> public string Actor { get; set; } /// <summary> /// 获取或设置 上映时间 /// </summary> public string Time { get; set; } /// <summary> /// 获取或设置 实时票房 /// </summary> public string BoxInfo { get; set; } /// <summary> /// 获取或设置 总票房 /// </summary> public string SumBoxInfo { get; set; } /// <summary> /// 获取或设置 简介 /// </summary> public string Introduction { get; set; } /// <summary> /// Markdown 格式化输出 /// </summary> /// <returns></returns> public string ToString() { string str = Environment.NewLine + "---" + Environment.NewLine + "## Top" + Num.ToString().PadLeft(2, '0') + " <br>" + MovieName + Environment.NewLine + "- 类型:" + Type + Environment.NewLine + "- 主演:" + Actor + Environment.NewLine + "- 上映时间:" + Time + Environment.NewLine + "- 实时票房:<span style='color:#E53935'><b>" + BoxInfo + "</b></span>" + Environment.NewLine + "- 总票房:<span style='color:#757575'><b>" + SumBoxInfo + "</b></span>" + Environment.NewLine + "- 剧情简介:" + Introduction + Environment.NewLine; return str; } }

2. 获取对应网页的HTML DOM TREE

public static IHtmlDocument GetHtmlDocument(string url) { IHtmlDocument document; try { document = new JumonyParser().LoadDocument(url); } catch { document = null; } return document; }

3. 获取存储票房数据的电影列表 List<Film>

public static List<Film> GetFilmsTicket() { List<Film> result = new List<Film>(); string url = ""; //国内票房榜 IHtmlDocument doc = GetHtmlDocument(url); if (doc == null) return result; List<IHtmlElement> lists = doc.Find("dd").ToList(); for (int i = 0; i < li; i++) { List<IHtmlElement> infor = lists[i].Find("p").ToList(); Film item = new Film(); i = i + 1; //排名 string dw, ticket; List<IHtmlElement> s; if < 5) { // 有些电影没有演员的数据,所以这里分开了。 i = infor[1].InnerHtml().Trim().Remove(0, 5); //上映时间 dw = infor[2].InnerHtml().Trim(); dw = dw.Remove(0, dw.Length - 1); //实时票房单位 s = infor[2].Find(".stonefont").ToList(); ticket = s[0].InnerHtml().Trim(); //加密的实时票房 i = ticket + dw; //实时票房 dw = infor[3].InnerHtml().Trim(); dw = dw.Remove(0, dw.Length - 1); //总票房单位 s = infor[3].Find(".stonefont").ToList(); ticket = s[0].InnerHtml().Trim(); //加密的总票房 i = ticket + dw; //总票房 } else { i = infor[1].InnerHtml().Trim().Remove(0, 3); //演员 i = infor[2].InnerHtml().Trim().Remove(0, 5); //上映时间 dw = infor[3].InnerHtml().Trim(); dw = dw.Remove(0, dw.Length - 1); //实时票房单位 s = infor[3].Find(".stonefont").ToList(); ticket = s[0].InnerHtml().Trim(); //加密的实时票房 i = ticket + dw; //实时票房 dw = infor[4].InnerHtml().Trim(); dw = dw.Remove(0, dw.Length - 1); //总票房单位 s = infor[4].Find(".stonefont").ToList(); ticket = s[0].InnerHtml().Trim(); //加密的总票房 i = ticket + dw; //总票房 } IHtmlElement a = infor[0].Find("a").ToList()[0]; //获取影片url i = a.InnerHtml().Trim(); //名称 url = "; + a.Attribute("href").AttributeValue; IHtmlDocument temp = GetHtmlDocument(url); List<IHtmlElement> t = ("li.ellipsis").ToList(); i = t[0].InnerHtml(); //类型 List<IHtmlElement> b = (".dra").ToList(); i = b[0].InnerHtml(); //介绍 re(item); } return result; }

4.格式化输出「猫眼电影:国内票房榜」

private List<Film> _lstTicket = new List<Film>(); //票房 private void btnTicket_Click(object sender, EventArgs e) { if == 0) _lstTicket = FilmH(); string result = ; for (int i = 0; i < _l; i++) { result += _lstTicket[i].ToString() + Environment.NewLine + "广告" + Environment.NewLine; } ShowMarkdownData(result); ShowInGrid(_lstTicket); }

表格显示

private void ShowMarkdownData(string str) { string temp = Environment.GetEnvironmentVariable("TEMP"); temp += "\\;; StreamWriter sw = File.CreateText(temp); (str); Proce(temp); (); }

Markdown显示

注:此处输出的是已经破解猫眼电影反爬虫机制之后得到的结果,关于如何破解猫眼电影的反爬虫机制,我会在下周二的技术图文中跟大家详细介绍。

5. Markdown 文本的 HTML 渲染

HTML渲染


到此为止,关于如何利用 C# 语言爬取「猫眼电影:国内票房榜」及对应影片信息,就介绍完了。大家有什么问题可以在图文的下方给我留言,今天就到这里吧!See You!


相关图文:

  • 如何利用 C# 爬取 One 持有者返利数据!
  • 如何利用 C# 爬取Ga交易所的公告!
  • 如何利用 C# 爬取BigOne交易所的公告!
  • 如何利用 C# 爬取 ONE 的交易数据?
  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 爬取「京东 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取「互动出版网 - 计算机图书销量榜」!
  • 如何利用 C# 爬取「中国图书网 - 计算机与互联网图书销量榜」!
  • 如何利用 C# 爬取带 Token 验证的网站数据?

1.《猫眼app怎么看票房排行看这里!如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《猫眼app怎么看票房排行看这里!如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3221600.html

上一篇

关于猫咪后院手机版怎么玩,你需要知道这些《猫咪后院》:一个小游戏是如何吐出大“毛球”的

猫眼app怎么看票房排行?我来告诉你答案战狼2的实时票房数据去哪儿找?6个网络指数平台推荐

猫眼app怎么看票房排行相关介绍,如果你对传统企业互联网转型、大数据、产业4.0等内容文章、资料、PPT等感兴趣(提供下载~),请江企业阅读公众号。 来源/钱塘大数据 各大媒体最近疯狂被战狼2刷屏,战狼2创造了八天20亿的神话,那么你...

关于猫眼app怎么看票房排行,你需要知道这些猫眼电影小程序上线位居TOP5广受好评

猫眼app怎么看票房排行相关介绍,猫眼电影系列小程序自1月9日首次上线以来,迅速吸引了大量用户,以其触角、紧凑、即时走的便利性和流畅的用户体验受到好评。在点击率、活动度等多方面占据微信小程序TOP5,受到极客公园、雷锋网等媒体的好评,...