Python采集豆某影片并作词云图分析

news2024/11/24 19:17:40

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

目录

      • 前言
      • 环境使用:
      • 模块使用:
      • 爬虫基本思路:
      • 代码展示
        • 绘制词云图
        • 尾语 💝

环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

  • import parsel >>> pip install parsel

  • import requests >>> pip install requests

  • import csv

本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转

爬虫基本思路:

一. 数据来源分析:

  1. 明确需求

    • 明确采集的网站是什么?

    • 明确采集的数据是什么?

      影评相关数据内容: 昵称/时间/内容/归属地…

  2. 抓包分析

    通过开发者工具进行抓包分析

    • 打开开发者工具: 在网页上面 F12 / 鼠标右键点击检查选择network

    • 刷新网页: 让网页数据重新加载一遍

    • 通过关键字搜索数据来源: 关键字<要获取的数据>

二. 代码实现步骤:

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

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

    开发者工具: response

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

    影评相关数据

  4. 保存数据, 把数据内容保存csv表格文件里面

代码展示

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

“”"

  • 安装模块:
    1. win + R 输入cmd 然后输入 安装命令 pip install requests
    2. 在pycharm终端里面 输入安装命令 pip install requests
  • 模拟浏览器: --> headers 请求头 <开发者工具进行复制>
    把python代码伪装成浏览器去发送请求
    目的: 为了防止被反爬
    反爬: 你得不到数据, 或者返回的数据不是你想要的
  • 如何批量替换
    1. 选中替换内容, ctrl + R
    2. 勾选上 .* 正则
    3. 输入正则匹配规则, 进行替换
    :.*
    ,
  • 采集的速度过快/频繁, 可能会IP异常
    解决方法:
    1. 登陆账号加上cookie
    2. 用IP代理, 切换IP
    免费的IP, https 可能用不了 HTTP有一些可以的, 质量不好
    氪金的IP 一个IP 几分钱一个
    • 多页的数据采集
      分析请求链接的变化规律

你要从事pachong岗位, 这方面工作: <采集的数据量比较大>
天天和反爬打交道了JS逆向,加密 反爬IP被封,账号被封

“”"

  1. 发送请求, 模拟浏览器对于url地址发送请求
# 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 --> 文本

“”"

    # 把获取下来html字符传数据<response.text>, 转换可解析的对象
    selector = parsel.Selector(response.text)

“”"

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

    影评相关数据

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

“”"

    # 第一次提取所有内容
    divs = selector.css('div.comment-item')
    # 把列表里面元素一个一个提取出来, for循环遍历
    for div in divs:
        """
        湖南 长沙
        .comment-info a::text --> 提取类名为comment-info标签下面a标签里面文本数据
        get() --> 获取第一个标签数据, 返回字符串数据类型
        attr() --> 获取标签里面属性
        """
        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/188888.html

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

相关文章

二叉树26:二叉树的最近公共祖先

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;236. 二叉树的最近公共祖先 题目&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科…

网络工程师备考9章

第九章:网络操作系统与应用服务器 9.1 考点分析 ​​​​​​​ 注:MCSE、RHCE基础:微软和红帽的系统工程师的内容都纳入到一章里;我们要学的服务器类型非常多,最重要的罗列下来,总结起来就是3D+I; 9.1.1 网络操作系统 9.2 安装过程 略 9.3 Windows Server 2008 R2 本…

创新科技引领清洁新标准,CEYEE希亦洗地机重新定义深度清洁

后疫情时代&#xff0c;随着人们健康意识的增强&#xff0c;家庭清洁卫生意识逐渐深入人心&#xff0c;大家对于清洁家电的选择也不再局限于基础功能&#xff0c;而是更注重智能化、健康化、便捷性、多功能等维度。创新型科技新消费品牌「CEYEE希亦」也由此应运而生&#xff0c…

SpringCloud-Eureka

1.Spring Cloud是什么&#xff1f; SpringCloud是一系列框架的有序集合。【包含了开发所需的其他的框架】 它利用SpringBoot的开发便利性&#xff0c;巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务注册、服务发现、配置中心、消息总线、负载均衡、断…

如何安装python运行环境,想学python需要安装什么

这篇文章主要介绍了安装python程序后要进行什么设置&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、使用python需要安装哪些软件 《Python 3.9.7软件》百度网盘资源免费下…

浅析DDOS攻击及防御

如今&#xff0c;信息技术的发展为人们带来了诸多便利&#xff0c;无论是个人社交行为&#xff0c;还是商业活动都离不开网络。但是&#xff0c;网络空间在创造机遇的同时&#xff0c;也带来了威胁&#xff0c;其中 DDOS 就是最具破坏力的攻击。经过这些年的不断发展&#xff0…

QT/C++——文件和进程线程编程

目录 一、文件普通读写和流式读写 二、目录遍历和文件属性读写 三、进程 四、线程 五、线程同步 六、线程互斥 一、文件普通读写和流式读写 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTextEdit> #include <QLineEdit> #include…

iPhone彻底删除的重要照片怎么找回来?三招找回被删照片!

要说iPhone手机占用储存空间最多的是什么&#xff1f;照片&#xff0c;相信是大部分苹果手机用户的回答。 iPhone强大的拍照技术&#xff0c;拍了很多照片&#xff0c;却十分占用内存。在清理照片时&#xff0c;为了快速释放内存&#xff0c;快速滑动批量删除照片。 我们知道&…

C++ 标准库 常用算法总结(排序、合并、搜索和分区)

本系列文章介绍了所有的STL常用的算法。这些算法通常都有不同的功能&#xff0c;例如&#xff1a;排序元素算法{sort()、stable_sort()、nth_element()}、 查询元素算法{find()、find_if()、find_if_not()、find_end()、find_first_of()、adjacent_find()}、 复制元素算法{co…

Android 分区存储

1.Android存储 Android存储分为内部存储和外部存储&#xff08;外部存储并不是指SD存储卡或外部硬盘&#xff09;。 ①内部存储 用于Android系统本身和应用程序的存储区域&#xff0c;比如手机的/system/、/data/等目录。 如果没有这一块存储区域是无法运行Android系统和应用…

Windows Server 2022 中文版、英文版下载 (updated Jan 2023)

Windows Server 2022 正式版&#xff0c;2023 年 1 月更新&#xff0c;持续更新中… 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 此次发布更新…

如何设置 Excel 的行标题

Excel的行标题 打开或关闭Excel标题行Excel中的标题行格式选项Microsoft Excel工作表可以容纳一百万行,其中包含数字或文本数据集。行标题是位于工作表第1列左侧的灰色列,其中包含数字(1、2、3等),有助于识别工作表中的每一行。 尽管列标题是灰色的行,但它通常是字母(A、…

java泛型4

通配符之设定类型通配符的上限-------什么时候需要设置上限&#xff1f;&#xff1f;&#xff1f;&#xff1f;协变 还差一个Canvas类 这样定义行不行&#xff1f;不行&#xff01;&#xff01;&#xff01; 测试一下&#xff1a; 注意上面的drawAll()方法的形参类型是List …

好的直线导轨应该具备哪些要求?

直线导轨运用于各行各业&#xff0c;范围非常之广&#xff0c;但是对于直线导轨的要求都是大同小异的&#xff0c;下面我们来看下良好的直线导轨都应具备哪些要求&#xff1f; 1>运动灵敏度与定位精度高&#xff1a;定位精度是指运动构件能按要求停止在指定位置的能力。运动…

musl pwn 入门 (4)

在前面的介绍中&#xff0c;我们学习了musl pwn的基本原理&#xff0c;下面我们就通过一道经典例题进一步巩固。 这是DefCon Quals 2021中的一道题mooosl&#xff0c;直接在github上搜这道题的名字就可以找到作者发布的附件&#xff0c;内含说明、作者的exp、源码以及二进制程…

Linux系统之openEuler安装部署

Linux系统之openEuler安装部署一、openEuler介绍1.openEuler简介2.openEuler的硬件要求①物理机的安装要求②虚拟机的安装要求二、下载openEuler系统镜像1.官方网址2.下载openEuler系统镜像三、虚拟机配置工作1.设置虚拟机名称2.处理器配置3.设置虚拟机内存4.设置网络类型5.磁盘…

电脑桌面壁纸不清晰?壁纸模糊怎么修复高清?

我们在入手新电脑之后&#xff0c;首先就是会想要设置一个好看的壁纸&#xff0c;虽然系统会自带一些壁纸&#xff0c;但大多数用户都不喜欢这样一成不变的壁纸。于是在网上找了很好好看的壁纸换上&#xff0c;结果发现在更换电脑壁纸之后却发现壁纸显示非常的模糊不清。为什么…

git中gitignore忽略文件规则配置

我们在日常开发中会遇见项目打包的情况&#xff0c;然后这时候我们想要打包完成后提交一次代码&#xff0c;会忘记删除dist文件或者打包文件&#xff0c;会跟着提交上去&#xff0c;这样就造成了协同开发的麻烦&#xff0c;也会造成codeReview的障碍&#xff0c;让别人在拉取代…

CNN平移不变性

目录 .1 简介&#xff1a; 1.1什么是平移不变性 1.2 平移不变性/平移同变性 1.3 为什么卷积神经网络具有平移不变性 总结 1.4 证伪&#xff1a;CNN中的图片平移不变性 .2 实例 references&#xff1a; .1 简介&#xff1a; 1.1什么是平移不变性 不变性 不变性意味着即…

跟风试试ChatGPT

文章目录前言什么是ChatGPTChatGPT怎么玩注册验证使用设计型开发型强人所难型Python调用ChatGPT总结前言 其实现在也不算是跟风了&#xff0c;从 ChatGPT 出现至今已经有几个月的时间&#xff0c;这股风似乎已经刮过去了&#xff0c;虽然各种新闻铺天盖地&#xff0c;但因为懒…