Python采集*瓣电影影评并实现可视化分析

news2024/11/16 3:32:37

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

又到了学Python时刻~

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用

  • import parsel >>> pip install parsel

  • import requests >>> pip install requests

  • import csv

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

( 更多资料、教程、文档点击此处跳转跳转文末名片加入君羊,找管理员小姐姐领取呀~ )

思路分析

代码展示

( 完整源码点击此处跳转跳转文末名片加入君羊,找管理员小姐姐领取呀~ )

数据采集

导入模块

# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块, 需要安装 pip install parsel
import parsel
# 导入csv模块 --> 内置模块, 不需要安装
import csv

“”"

  1. 发送请求, 模拟浏览器对于url地址发送请求

    • 模拟浏览器: --> headers 请求头 <开发者工具进行复制>

      把python代码伪装成浏览器去发送请求

      目的: 为了防止被反pa

      反pa: 你得不到数据, 或者返回的数据不是你想要的

    • 如何批量替换

      1. 选中替换内容, ctrl + R

      2. 勾选上 .* 正则

      3. 输入正则匹配规则, 进行替换

        :.*
        ,

    • 采集的速度过快/频繁, 可能会IP异常

      解决方法:

      1. 登陆账号加上cookie

      2. 用IP代理, 切换IP

      免费的IP, https 可能用不了 HTTP有一些可以的, 质量不好

      氪金的IP 一个IP 几分钱一个

    • 多页的数据采集

      分析请求链接的变化规律

“”"
0<起始数包含>, 201<末尾数不包含>, 20<步长>

for page in range(0, 201, 20):
    # 请求链接 字符串格式化方法 -->
    url = f'https://movie.****.com/subject/4811774/comments?start={page}&limit=20&status=P&sort=new_score'

伪装模拟

    headers = {
        # User-Agent 用户代理, 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

发送请求

    response = requests.get(url=url, headers=headers)

“”"

  1. 获取数据, 获取服务器返回响应数据

    开发者工具: response

    response.text --> 获取响应文本数据

    response --> 响应对象

    text --> 文本

  2. 解析数据, 提取我们想要的数据内容

    影评相关数据

css选择器: 根据标签属性提取数据内容

“”"

把获取下来html字符传数据<response.text>, 转换可解析的对象

    selector = parsel.Selector(response.text)

第一次提取所有内容

    divs = selector.css('div.comment-item')

把列表里面元素一个一个提取出来, for循环遍历

    for div in divs:
        name = div.css('.comment-info a::text').get()  # 昵称
        rating = div.css('.rating::attr(title)').get()  # 评分
        date = div.css('.comment-time ::attr(title)').get()  # 日期
        area = div.css('.comment-location::text').get()  # 归属地
        short = div.css('.short::text').get().replace('\n', '')  # 评论
        count = div.css('.vote-count::text').get()  # 有用

把数据放到字典里面

        dit = {
            '昵称': name,
            '评分': rating,
            '日期': date,
            '归属地': area,
            '评论': short,
            '有用': count,
        }

写入数据

        csv_writer.writerow(dit)
        print(name, rating, date, area, short, count)

创建文件对象

f = open('影评.csv', mode='a', encoding='utf-8-sig', newline='')
# f 文件对象 fieldnames 表头/字段名
csv_writer = csv.DictWriter(f, fieldnames=[
    '昵称',
    '评分',
    '日期',
    '归属地',
    '评论',
    '有用',
])

写入表头

csv_writer.writeheader()

词云图

导入模块

# 导入结巴模块 --> 第三方模块, 需要安装 pip install jieba
import jieba
# 导入pandas --> 第三方模块, 需要安装 pip install pandas
import pandas as pd
# 导入词云模块 --> 第三方模块, 需要安装 pip install wordcloud
import wordcloud

读取csv表格里面数据内容

df = pd.read_csv('影评.csv')

获取评论内容

content_list = df['评论'].to_list()

把列表转成字符串

content = ''.join(content_list)

进行分词处理

string = ' '.join(jieba.lcut(content))

词云图配置

wc = wordcloud.WordCloud(
    width=1000,  # 宽
    height=700,  # 高
    background_color='white',  # 背景颜色
    font_path='msyh.ttc', # 设置字体
    stopwords={'了', '的', '是', '我', '在', '和'},
    scale=15
)

传入文字内容

wc.generate(string)

输出词云图

wc.to_file('词云图.png')
print(string)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 1825 求出MK平均值【Set 队列】 HERODING的LeetCode之路

解题思路&#xff1a; 好久没更新力扣困难题的题解了&#xff0c;今天这道困难题有点意思&#xff0c;读罢题目一目了然&#xff0c;解题思路清晰明了&#xff0c;就是解题过程细节满满。这是一个数据流场景的问题&#xff0c;保留最后m个元素&#xff0c;但是要去除k个最大&am…

设计模式—工厂方法模式

工厂方法模式 文章目录工厂方法模式工厂方法模式是什么理解工厂方法模式代码实例运行截图工厂方法的优点工厂方法的不足工厂方法模式是什么 工厂方法模式属于创建型模式&#xff0c;也叫抽象构造模式&#xff0c; 工厂方法模式将工厂抽象化&#xff0c;并定义一个创建对象的接…

高级语言(C语言)、汇编语言、机器语言区别?编译器如何将高级语言编译成机器语言?

⾼级语⾔&#xff1a; 是相对于汇编语⾔⽽⾔的&#xff0c;是⾼度封装了的编程语⾔&#xff0c;与低级语⾔相对。它是以⼈类的⽇常语⾔为基础的⼀种编程语⾔&#xff0c;使⽤⼀般⼈易于接受的⽂字来表⽰&#xff08;例如汉字、不规则英⽂或其他外语&#xff09;&#xff0c;从…

(二十四)List系列集合

目录 前言: 一、List集合的特有方法 二、List集合的遍历方式有几种&#xff1f; 三、Arraylist集合底层原理 四、LinkedList的特点 前言: List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复&#xff0c;各元素的顺序放是对象插入的顺序&#xff…

C生万物 | C语言文件操作指南汇总【内附文件外排序源码】

&#x1f451;作者主页&#xff1a;Fire_Cloud_1 &#x1f3e0;学习社区&#xff1a;烈火神盾 &#x1f517;专栏链接&#xff1a;万物之源——C 文章目录一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;1、程序文件2、数据文件3、文件名三、文件的打开和关闭1、文件…

自动化测试【软件测试】

自动化测试 什么是自动化 有效减少人力的消耗&#xff0c;同时提高生活的质量 通过自动化测试有效减少人力的投入&#xff0c;同时提高了测试的质量和效率 由于回归测试&#xff0c;版本越来越多&#xff0c;版本回归的压力越来越大&#xff0c;仅仅通过人工测试来回归所有版本…

2.3、进程控制

整体框架 1、什么是进程控制&#xff1f; 进程控制的主要功能是对系统中的所有进程实施有效的管理&#xff0c; 它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简单来说&#xff1a;进程控制就是要实现进程状态转换 2、如何实现进程控制&#xff1f; 2.1、进程…

ATAC-seq分析:TSS 信号(7)

ATACseq ATACseq - 使用转座酶并提供一种同时从单个样本的转录因子结合位点和核小体位置提取信号的方法。 1. 数据类型 上面这意味着我们的数据中可能包含多种信号类型。 我们将从无核小体区域和转录因子&#xff08;我们的较短片段&#xff09;周围获得信号。我们的一部分信号…

2-Spring核心与设计思想

目录 1.Spring是什么&#xff1f; 2.容器是什么&#xff1f; 3.IoC是什么&#xff1f; 3.1.传统程序开发 3.2.控制反转式程序开发 3.3.对比总结规律 4.理解Spring IoC 4.1.将对象(Bean)存入到容器(Spring)&#xff1b; 4.2.从容器中取出对象。 5.DI概念说明 1.Spring…

计算机编程背景

&#x1f496; 欢迎来阅读子豪的博客&#xff08;JavaEE篇 &#x1f934;&#xff09; &#x1f449; 有宝贵的意见或建议可以在留言区留言 &#x1f4bb; 欢迎 素质三连 点赞 关注 收藏 &#x1f9d1;‍&#x1f680;码云仓库&#xff1a;补集王子的代码仓库 不要偷走我小火…

classpath类路径是什么

Spring Boot 一、简介 classpath类路径在 Spring Boot 中既指程序在打包前的/java/目录加上/resource目录&#xff0c;也指程序在打包后生成的/classes/目录。两者实际上指的是同一个目录&#xff0c;里面包含的文件内容一模一样。 二、获取classpath路径 以下两种方式均可…

Icarus Verilog

Icarus Verilog 是一个Verilog仿真工具&#xff0c;以编译器的形式工作&#xff0c;将以verilog编写的源代码编译为某种目标格式。如果要进行仿真的话&#xff0c;可以生成一个vvp的中间格式&#xff0c;由其所附带的vvp命令执行。 https://github.com/steveicarus/iverilog …

面试官:请设计一个能支撑百万连接的系统架构!

目录 1、到底什么是连接&#xff1f;2、为什么每次发送请求都要建立连接&#xff1f;3、长连接模式下需要耗费大量资源4、Kafka遇到的问题&#xff1a;应对大量客户端连接5、Kafka的架构实践&#xff1a;Reactor多路复用6、优化后的架构是如何支撑大量连接的 这篇文章&#x…

SQL Server 全文索引的应用

在公司项目中提出了一个需求&#xff1a; 搜索包含指定关键词的数据。得到这需求后&#xff0c;站在技术角度考虑第一时间就联想到使用SQL里面“like”查询语句。进一步分析需求后&#xff0c;发现“Like”查询满足不到实际的要求。 示例&#xff1a; ---------------------…

【Ajax】接口与接口测试工具PostMan

一、接口接口的概念使用 Ajax 请求数据时&#xff0c;被请求的 URL 地址&#xff0c;就叫做数据接口&#xff08;简称接口&#xff09;。同时&#xff0c;每个接口必须有请求方式。例如&#xff1a;http://www.liulongbin.top:3006/api/getbooks 获取图书列表的接口(GET请求)ht…

【4 - 降维算法PCA和SVD - 案例部分】菜菜sklearn机器学习

课程地址&#xff1a;《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期&#xff1a;sklearn入门 & 决策树在sklearn中的实现第二期&#xff1a;随机森林在sklearn中的实现第三期&#xff1a;sklearn中的数据预处理和特征工程第四期&#xff1a;sklearn中的降维算法…

为何香港的IB状元特别多?

今年IB预科课程&#xff08;The International Baccalaureate Diploma Programme&#xff0c;IBDP&#xff09;公开考试放榜&#xff0c;香港的学校又是大丰收的一年&#xff01;因为香港今年一共有九十三名IB状元&#xff0c;即IB的总分为四十五分满分&#xff0c;而他们全部取…

Linux 环境部署 Nexus 服务

一 私服是什么&#xff1f; 一个特殊的远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;供局域网内的开发人员使用。 当Maven需要下载构建的使用&#xff0c; 它先从私服请求&#xff0c;如果私服上没有的话&#xff0c;则从外部的远程仓库下载&#xff0c;然后…

算力服务亟待破局,超聚变向新而行

“超聚变已独立活下来。”超聚变产品线总裁范瑞琦在2023新品发布会上透露。自从一年多前从华为体系独立&#xff0c;超聚变公司的未来就颇受业界关注。一方面&#xff0c;算力产业蒸蒸日上&#xff0c;各方尤为关注超聚变的产业定位以及发展算力产业的着力点&#xff1b;另一方…

mysql存储过程的流程控制

本文来说下mysql存储过程的流程控制语句 文章目录流程控制概述IF语句CASE语句LOOP语句LEAVE语句ITERATE语句REPEAT语句WHILE语句本文小结流程控制概述 存储过程中可以使用流程控制来控制语句的执行。 MySQL中可以使用IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPE…