反贪风暴4-猫眼影评从爬取到可视化(代码片段)

byadmin byadmin     2022-12-02     563

关键词:

我感觉学习python有一个阶段就是熟悉它的各种第三方库的使用,这次我们用jieba分词,用wordcloud生成词云,用pyecharts生成柱状图,来看看吧~

若您有需要,所有文件已上传到我的github(左上角图标直达)~

从爬虫开始好了,猫眼电影电脑网页版只能看热门影评。其实为了获取更多影评我们可以这样做,浏览器内按f12打开开发者工具,选择手机浏览模式,刷新后就会是手机版的网页了。如图:

 

技术图片

 
然后查找接口,页面往下拉...em...很容易就找到了,是这个
 
技术图片
 
这是一个js发起的get请求,看链接可以知道参数有
  1. movieId:1211727#电影id
  2. userId:-1#用户id,我猜是我没有登录所以为-1
  3. offset:0#控制返回的影评的位置,最主要的一条
  4. limit:15#一次返回15条影评
  5. ts:0#时间戳?不确定
  6. type:3#类型

我们伪造这一条请求就能直接获得影评了,而且返回是json格式,甚至都不用整理数据了

爬虫代码:

import requests
import json


headers = 
User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; MI 6  Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 TitansX/11.14.7 KNB/1.2.0 android/5.1.1 com.sankuai.moviepro/com.sankuai.moviepro/5.4.4 App/10a20/5.4.4 com.sankuai.moviepro/5.4.4,


def get_one(offset):
    url = https://m.maoyan.com/review/v2/comments.json?
    params = 
        movieId: 1211727,
        userId: -1,    
        offset: offset,  #offset控制传来第几页数据
        limit: 15,
        ts: 0,
        type: 3,
    
    r = requests.get(url=url,params=params,verify=False)  #verify=False为避免ssl认证,防止访问https时报错,这里假设所有访问都会正常,没有加容错机制。
    js = json.loads(r.text)  #将返回的json转为字典类型
    with open(fantan4.json,a,encoding=utf-8) as f:
        json.dump("items":js[data][comments], f, ensure_ascii=False, sort_keys=True, indent=4)  #写获取的所有详情到json文件中
        f.write(,)  #这里加一个‘,‘是为了之后将json文件格式改造正确所用
    comments = []
    for dic in js[data][comments]:
        comments.append(dic[content])  #这里获取每条影评到列表
    str1 =  .join(comments)  #影评列表转字符串以‘ ‘分开
    print(str1)
    with open(com.txt,a,encoding=utf-8) as f:
        f.write(str1)  #单独写入影评到文件,用于词云的生成
for i in range(0,67):
    print(i)
    get_one(i*15)

 

 

保存的json我自己增加了一个键‘all’并以[]包含了所有的值,如图:

技术图片

 

 数据都准备好了就开始画图啦~先用评论按词频生成词云看看吧~这是做蒙版的图(自己扣出来的,羽化有点严重,请不要在意这些细节~~):
技术图片
 生成的词云:
技术图片
 生成词云的代码:
from os import path     #组织文件路径
from PIL import Image   #处理传入的背景图
#词云生成模块
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
import jieba     #中文分词
import numpy as np
#中文处理
import matplotlib.font_manager as fm
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding=utf-8)
#背景图
bg = np.array(Image.open(1.jpg))

#获取当前项目路径
dir = path.dirname(__file__)

#添加自定义的分词
jieba.add_word(古天乐)
jieba.add_word(林峰)
jieba.add_word(反贪)
#一些词要去除,停用词表
stopwords_path=stopwords.txt

#文本的名称
text_path=com.txt

#读取要分析的文本
text = open(path.join(dir,text_path),encoding=utf-8).read()

#函数,用于分词
def jiebaClearText(text):
    #空列表,将已经去除的停用词的分词保存
    myWordList = []
    #分词
    seg_list = jieba.cut(text,cut_all=False)
    #seg_list类型是generator
    #将每个generator的内容用/连接
    listStr = /.join(seg_list)
    #停用表
    f_stop = open(stopwords_path,encoding=utf-8)
    #读取
    try:
        f_stop_text = f_stop.read()
    finally:
        f_stop.close()
    #停用词格式化,用\\n分开(因为原来文件里一行一个停用词),返回一列表

    f_stop_seg_list = f_stop_text.split(\\n)
    #将用‘/‘结合的内容分开并去重用于去掉停用词

    bookList=listStr.split(/)

    #默认模式遍历,去掉停用词
    for myword in bookList :
        #去掉停用词,逻辑:若内容不在停用词列表且长度>1则收录
        if not ((myword.split())) in f_stop_seg_list and len(myword.strip())>1:
            myWordList.append(myword)
    return myWordList
text1 = jiebaClearText(text)

#计算词频
frequency = 
for i in text1:
    print(i)
    if i in frequency:
        frequency[i]+=1
    else:
        frequency[i]=1

print(frequency)
#生成
wc = WordCloud(
    background_color = white,   #背景色
    max_words = 300,  #最大显示词数
    mask = bg,    #图片背景
    min_font_size=6,  # 字最大尺寸
    max_font_size = 100,   #字最大尺寸
    random_state = 42,
    font_path=C:/Windows/Fonts/simkai.ttf #字体
).fit_words(frequency)

#为图片设置字体
my_font = fm.FontProperties(fname=C:/Windows/Fonts/simkai.ttf)

#产生背景图片,基于彩色图像的颜色生成器
image_colors = ImageColorGenerator(bg)
#画图
plt.imshow(wc.recolor(color_func=image_colors))

#为云图去掉坐标轴
plt.axis(off)
#画云图,显示
plt.figure()
#为背景图去掉坐标轴
plt.axis(off)
plt.imshow(bg,cmap=plt.cm.gray)

#保存
wc.to_file(man.png)

 

最后给出pyecarts生成柱状图的代码:

from pyecharts import Bar
import json


#用于记录不同性别的打分
all = 0:[0,0,0,],1:[0,0,0,],2:[0,0,0,],3:[0,0,0,],4:[0,0,0,],5:[0,0,0,],6:[0,0,0,],7:[0,0,0,],8:[0,0,0,],9:[0,0,0,],10:[0,0,0,]
with open(fantan4.json,r,encoding=utf-8) as f:
    js = json.loads(f.read())

for i in js[all]:
    items = i[items]
    for details in items:
        score = details[score]
        #取分数
        gender = details[gender]
        #取对应性别
        all[score][gender]+=1
        print(all)
male,female,none = zip(all[0],all[1],all[2],all[3],all[4],all[5],all[6],all[7],all[8],all[9],all[10])
#以性别分开数据,这么做为了将数据转化满足pyecharts输入的要求

attr = [0分,1分,2分,3分,4分,5分,6分,7分,8分,9分,10分]
#0为男,1为女,2为未知
bar = Bar("评分",)
bar.add("男性评分", attr, male, is_stack=True)
bar.add("女性评分", attr, female, is_stack=True)
bar.add("未知性别评分", attr, none, is_stack=True)
bar.render(1.html)

效果(鼠标放上去试试~~):

 

Echarts

 

python爬取《流浪地球》豆瓣影评与数据分析(代码片段)

...了豆瓣网上《流浪地球》的部分影评,并进行数据分析和可视化处理。三、实施过程及代码:1#爬取电影《流浪地 查看详情

《反贪风暴4》

1.古天乐:廉政公署 2.林峯:富二代,行贿者讲述了一个廉政公署人员为了调查一个犯了贪污罪的的富二代,而卧底去监狱调查的事情,结果就是将他们安排明白,顺便吧监狱里面贪污的人消灭掉了。 剧情设计的真的很... 查看详情

反贪风暴4高清mp4百度云下载

反贪风暴4高清MP4百度云下载 廉政公署收到报案人廖雨萍(周秀娜饰)的实名举报,举报正在坐牢的富二代曹元元(林峯饰)涉嫌行贿监狱里的监督沈济全(谭耀文饰)以及惩教员,首席调查主任陆志廉(古天乐饰)决定深... 查看详情

对猫眼电影排行的爬取(代码片段)

1.目标: 对猫眼电影前100名的爬取,并将结果以文件的形式保存下来2.准备工作:requests库3.抓取分析 offset代表偏移量值,分开请求10次,就可以获取前100的电影4.抓取首页5.正则提取6.文件提取7.代码整合8.每页爬取总代码... 查看详情

10分钟用python爬取最近很火的复联4影评(代码片段)

欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可!《复仇者联盟4:终局之战》已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币。虽然现在热度逐渐下降,但是我们还是恬不知耻地来蹭一蹭热... 查看详情

python爬虫宝典:从爬取网页到app所有思路总结(代码片段)

前言一、网页爬取二、App爬取三、解析四、存储五、反爬处理手段1.防止封IP2.验证码3.避免封账号六、提高爬取速度1.多线程、多进程2.异步3.分布式4.优化5.架构爬虫在工作生活中使用非常广泛,无论是论文数据准备还是市场... 查看详情

爬虫:爬取猫眼电影top100(代码片段)

一:分析网站目标站和目标数据目标地址:http://maoyan.com/board/4?offset=20目标数据:目标地址页面的电影列表,包括电影名,电影图片,主演,上映日期以及评分。二:上代码(1):导入相应的包importrequestsfromrequests.exceptionsimportRe... 查看详情

实战!《长津湖》为什么这么火爆?我用python来分析猫眼影评(代码片段)

作者:周萝卜链接:长津湖猫眼影评欢迎关注,专注Python、数据分析、数据挖掘、好玩工具!对于这个十一黄金周的电影市场,绝对是《长津湖》的天下,短短几天,票房就已经突破36亿,大有奋起... 查看详情

《扫黑风暴》值不值得看?pyhton爬取豆瓣短评数据告诉你答案(词云分析+情感分析可视化)(代码片段)

前言最近一部根据真实案例改编的《扫黑风暴》刚开播就受到一致好评,全员演技在线,故事悬疑,惊悚又令人上头!该剧顾名思义,聚焦全国扫黑除恶专项斗争,并致敬在雷霆行动中付出血与汗的当代英... 查看详情

爬取猫眼电影数据(代码片段)

最近做了一个新项目,因为项目需要大量电影数据,猫眼电影又恰好有足够的数据,就上猫眼爬数据了。1、先分析一下网页地址,发现电影都是被排好序号了,这就很简单了。2、在分析页面,这次主要爬取黄色框中的内容。在... 查看详情

爬取猫眼top100(代码片段)

importurllib.requestimportrandomimportreimportjson‘‘‘解决访问403的问题,需要模仿浏览器访问‘‘‘my_headers=["Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/39.0.2171.95Safari/537.36","Mozilla/5. 查看详情

正则表达式爬取猫眼电影(代码片段)

正则表达式爬取猫眼电影Top100importrequestsimportre,jsonfrommultiprocessingimportPooldefget_one_page(url):response=requests.get(url)returnresponse.textdefparse_one_page(html):pattern=re.compile(‘<dd>.*?board-index.*?>(d+)</i>.*?data-src="(.*?)".*?name"><a‘+‘.*?&g... 查看详情

python应用-爬取猫眼电影top100(代码片段)

importrequestsimportreimportjsonimporttimefromrequests.exceptionsimportRequestExceptiondefget_one_page(url):try:headers='User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.3 查看详情

爬虫练习|爬取猫眼电影top100(代码片段)

#coding=utf-8_date_=‘2018/12/916:18‘importrequestsimportreimportjsonimporttimedefget_one_page(url):headers=‘User-Agent‘:‘Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/ 查看详情

scrapy框架之crawlspider(代码片段)

...的基类,其设计原则只是为了爬取start_url列表中网页,而从爬取到的网页中提取出的url进行继续的爬取工作使用CrawlSpider更合适。CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取。... 查看详情

crawlspider和中间件(代码片段)

...的基类,其设计原则只是为了爬取start_url列表中网页,而从爬取到的网页中提取出的url进行继续的爬取工作使用CrawlSpide 查看详情

ai-tensorflow-示例:影评文本分类(代码片段)

...、损失函数和优化器5.创建验证集6.训练模型7.评估模型8.可视化:创建准确率和损失随时间变 查看详情

requests库爬取猫眼电影“最受期待榜”榜单--网络爬虫(代码片段)

目标站点:https://maoyan.com/board/6#coding:utf8importrequests,re,jsonfromrequests.exceptionsimportRequestException#frommultiprocessingimportPool#获取页面defget_one_page(url):try:resp=requests.get(url)ifresp.s 查看详情