很多时候从B站可以看到一些大热电影的高评论数和高评分,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?面对即将问世的《鹰猎长空》。

需要用到的库有:requests、re、pandas、selenium、lxml。
还要准备ChromeDriver。安装教程:https://jingyan.baidu.com/article/3ea5148906a09e13e61bba8e.html

导入需要的库

import requests
import re
import pandas as pd
from pandas.core.frame import DataFrame

1
2
3
4

总之能导的全导进去

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import numpy as np
from lxml.html import fromstring
import time
from random import random

1
2
3
4
5
6

打开ChromeDriver

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

opts = webdriver.ChromeOptions()
opts.add_argument(’–no-sandbox’)#解决DevToolsActivePort文件不存在的报错
opts.add_argument(‘window-size=1920x3000’) #指定浏览器分辨率
opts.add_argument(’–disable-gpu’) #谷歌文档提到需要加上一这个属性来规避bug
opts.add_argument(’–hide-scrollbars’) #隐藏滚动条, 应对些特殊页面
#opts.add_argument(‘blink-settings=imagesEnabled=false’) #不加载图片, 提升速度
#opts.add_argument(’–headless’) #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败

opts.binary_location = r"C:\Users******\chrome.exe" # 填入chrome.exe的地址

driver = webdriver.Chrome( options = opts)

1
2
3
4
5
6
7
8
9
10
11
12
13
14

打开网站

在ChromeDriver中,我们用driver.get()函数打开短评的网址https://www.bilibili.com/bangumi/media/md28230915/?spm_id_from=666.25.b_7265766965775f6d6f64756c65.1#short

driver.get(“https://www.bilibili.com/bangumi/media/md28230915/?spm_id_from=666.25.b_7265766965775f6d6f64756c65.1#short”)

1

加载数据

接下来就是最痛苦也是最煎熬的环节了,加载数据。由于b站的数据是下拉框,一次加载20条,于是我们要拖动页面,让它们慢慢加载。
有三种方法。

用鼠标左键拖动滑动条让它们滑下去;
用鼠标的滚轮拼命滚;
按住鼠标滚轮让它自己往下滚。

什么?嫌麻烦?真没办法。
那我们用代码来弄好了。

driver.execute_script(“window.scrollTo(0,document.body.scrollHeight)”)

1

这是一个下拉滚动条的代码,可以把滚动条拉倒最下面,但是只能拖一次,有什么方法呢?

while(1):
driver.execute_script(“window.scrollTo(0,document.body.scrollHeight)”) # 下拉滚动条

1
2

用while循环,你如果想爬取20页400条数据,就用

i = 0
while(i > 20):
driver.execute_script(“window.scrollTo(0,document.body.scrollHeight)”)
i += 1

1
2
3
4

while(1)是无限循环,我用的是jupyter,可以随时停止循环,且不会影响到前后的代码
也就运行了差不多半个小时,成功让网页显示了所有的评论。
开始爬数据

现在就是到了我们最高兴的时候,爬数据。

element = driver.find_element_by_xpath(’//*[@id=“app”]/div[2]/div[2]/div/div[1]/div/div/div[4]/div/div/ul’)
main_content = element.get_attribute(‘innerHTML’)
main_content

1
2
3

分析数据(我会介绍两种方法)
xpath方法

但是,main_content其实是str类型,也就是字符串,它很无法xpath分析。于是我们需要将它的类型进行转换

from lxml import etree
html = etree.HTML(main_content)
result = etree.tostring(html)
result = result.decode(“utf-8”)

1
2
3
4

用这个函数进行转换。将str类型的main_content修改为xml类型的result
之后我们就可以用xpath进行处理。

评论 = html.xpath(’//div[@class=“review-content”]/text()’)

1

re法爬评分

re法可以直接处理str类型的main_content,其优势在于可以比较方便地爬取一些字段,比如class里的值,里的值等。
我们可以看出,在源代码中,星星会亮是因为 <i class=“icon-start” icon-start-light&l;
我们不难发现,表示星星的代码是,有icon-star-light的星星为亮的星星,也就是分数。所以我们要做的是把这些星星的代码过滤出来,因此我们需要做的就是像这样
我们用(.*?)功能提取我们想要的部分,并把它们变成一个列表

评分 = re.findall(r’’, main_content)

1

处理完毕后就会像这样:
接下来统计会亮的星星的数量,这个简单,用for循环。

k = 0
分数 = []
for i in 评分:
for j in i:
if j == ‘icon-star icon-star-light’:
k += 1
分数.append(k)
k = 0
分数

1
2
3
4
5
6
7
8
9

计算后就会像这样:
在这里插入图片描述
计算分数和评论的条数

print(len(分数))
print(len(评论))

1
2

计算平均星数(星数乘2就是分数)

a = 0
for i in 分数:
a = a + i
print(a/len(分数))

1
2
3
4

做成表格

all = {“分数”:分数,
“评论”:评论}
data=DataFrame(all)
data

爬虫:b站(bilibili)电影《鹰猎长空》短评相关推荐

  1. 爬b站(bilibili)电影《鹰猎长空》短评

    很多时候从B站可以看到一些大热电影的高评论数和高评分,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?面对即将问世的<鹰猎长空>. 需要用到的库有:req ...

  2. 爬取影评来分析电影《鹰猎长空》评论是如何的

    很多时候从猫眼电影官网可以看到一些大热电影的高评论数和高评分,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?面对即将问世的<鹰猎长空>,整理基本的数据获 ...

  3. 爬取影评来分析电影《鹰猎长空》

    很多时候从猫眼电影官网可以看到一些大热电影的高评论数和高评分,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?面对即将问世的<鹰猎长空>,整理基本的数据获 ...

  4. 鹰猎长空,航空志愿飞虎队

    即将上映的电影<鹰猎长空>其里面涉及到的一支志愿队,是被中国人民高度赞誉的"飞虎队".1941年秋夏之间,"老头子"陈纳德在美国招募约100名飞行员 ...

  5. 用Python可视化多条影评,翱翔蓝空的鹰猎长空

    很多时候从猫眼电影官网可以看到一些大热电影的高评论数和高评分,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?面对即将问世的<鹰猎长空>,整理基本的数据获 ...

  6. 运用Python看看对于《鹰猎长空》的知乎 vs 豆瓣的战斗

    作为明年会上映国产电影<鹰猎长空>,看完概略之后觉得大体还可以,中规中矩的国产战争片.摄影.调度应该算得上是国内一流,要我评价的话会先给个基础分.不过自己打完分,都会习惯性去看看别人的评价 ...

  7. 《鹰猎长空》剖析对当下儿童电影的困境与反思

    进入二十一世纪以来,在国家文化产业政策的推动之下,民营资本进入电影领域,中国电影开始推行"院线制" ,由此进入了产业化快速发展通道,儿童电影产量也随之逐年上升,但是能进入院线的儿童 ...

  8. 《鹰猎长空》回顾我国电影发展史的115年

    随着人们生活水平的提高,精神娱乐越来越受到推崇,走进电影院感受光怪陆离的人生成了很多年轻人的选择.但从黑白电影到彩色电影,我国的电影发展史共用了115年的时间. 一.从无到有的电影里程碑 1905年1 ...

  9. 《鹰猎长空》疫情之后,欧洲最关注中国电影市场哪些方面?

    3月3日,柏林国际电影节欧洲电影市场(EFM)与龙跃中欧制片人协会共同举办中欧电影论坛和圆桌分享活动.这也是双方连续七年携手,聚焦中国电影市场的前沿动态. 2020年,中国的年度票房首次超过北美,成为 ...

最新文章

  1. yolov3网络结构笔记
  2. jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题
  3. NLP-基础知识-002 (语言模型)
  4. 【渝粤题库】广东开放大学 个人与团队管理 形成性考核
  5. HTML5中如何检查浏览器是否支持本地存储
  6. 企业级项目实战讲解!java类内部定义枚举
  7. Swift - 循环强引用,内存泄漏
  8. Android搜索手机文件
  9. IntelliJ Idea工作笔记004---IDEA中在Run DashBoard中添加项目
  10. 1一10到时的英文单词_哈尔滨一山羊皮,叫雪地皮衣!刮风下雪不冻身,10年免洗不过时...
  11. 稀疏表示、压缩感知.
  12. 邮件助手工具哪个好用?哪个企业群发邮件的软件好用?
  13. Java-买飞机票(方法优化版)
  14. 跌倒智能监测警报系统市场现状及未来发展趋势分析
  15. 人工智能入门算法逻辑回归学习笔记
  16. 2023.4.14.吉林长春.晴朗
  17. 数据结构C语言描述——用单链表实现多项式的相加
  18. 最惨大学生,大学四年,啥也不会
  19. mybatis(错误二) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案
  20. eclipse 自带git插件 文件提交后修改标志不明显

热门文章

  1. 国科大学习资料–模式识别--第六次作业
  2. java入门之计算机基础知识
  3. Learning Deep Features for Discriminative Localization -CAM方法帮助若监督学习研究实现物体定位论文阅读笔记
  4. 微信支付放大招 再也不用担心限额了!
  5. 2019年猪年海报PSD模板-第七部分
  6. 日常检查和维护数据库
  7. JAVA的基础数据类型及运行方法
  8. Blender 之 0维制作
  9. css过渡和动画的区别
  10. 计算机优秀教案设计,信息技术应用 用计算机画函数图象优秀教案设计