Python采集豆Top250电影数据 , 看看质量及评分

news2024/11/25 8:14:34

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

本次案例涉及点:

1、动态数据抓包演示

2、csv文件保存

3、requests模块的使用

4、parsel解析数据的使用

环境介绍:

软件安装

  • python 3.8

  • pycharm

不会安装的可以文末名片+我获取哦 😎

模块使用

内置模块

  • csv

第三方模块(需安装)

  • requests >>> pip install requests

  • parsel >>> pip install parsel

win + R 输入cmd 输入安装命令 pip install 模块名

如果出现爆红 可能是因为 网络连接超时 切换国内镜像源

写代码代码基本步骤:

  1. 发送请求, 确定url地址 然后对其发送请求

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

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

  4. 保存数据

  5. 多页数据爬取

代码展示:

导入模块:

import requests  # 数据请求模块 第三方模块 pip install requests
import parsel  # 数据解析模块 第三方模块 pip install parsel
import csv
import time # 时间模块
  1. 保存数据
f = open('豆Top250.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '导演',
    '演员',
    '电影年份',
    '拍摄国家',
    '电影类型',
    '电影评分',
    '评论人数',
    '电影简介',
])
csv_writer.writeheader()
num = 1
  1. 多页获取
for page in range(0, 250, 25):
    print(f'正在爬取第{num}页数据内容')
    num += 1
    time.sleep(1)
  1. 发送请求, 确定url地址 然后对其发送请求
    url = f'https://*****top250?start={page}&filter='
    # User-Agent 浏览器的基本标识 基本信息 headers请求头 主要是把python代码进行伪装
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
  1. 获取数据, 获取服务器返回的响应数据内容
# print(response.text) # response.text 获取响应体的文本数据 字符串数据类型  >>> re正则表达式
  1. 解析数据, 提取我们想要内容

    解析数据方法: re正则表达式 / xpath / css选择器

    parsel解析模块里面css选择器

    把获取到的html字符串数据类型进行转换

    selector = parsel.Selector(response.text)
    # css选择器 主要根据标签属性内容提取数据
    lis = selector.css('.grid_view li')  # 获取所有li标签 返回的数据 列表, 列表里面没一个元素都是selector对象
    for li in lis:
        title = li.css('.info .hd span.title:nth-child(1)::text').get()  # 电影的名字
        movie_info_list = li.css('.bd p:nth-child(1)::text').getall()  # 电影的信息
        # getall 返回的是列表 strip() 去除字符串左右两端空格
        actor_list = movie_info_list[0].strip().split('   ')
        if len(actor_list) > 1:
            actor_1 = actor_list[0].replace('导演: ', '')  # 导演
            actor_2 = actor_list[1].replace('主演: ', '').replace('/...', '')  # 主演
            movie_info = movie_info_list[1].strip().split(' / ')
            movie_year = movie_info[0]  # 电影的年份
            movie_country = movie_info[1]  # 电影的国家
            movie_type = movie_info[2]  # 电影的类型
            movie_sum = li.css('.inq::text').get()  # 电影简介
            movie_num = li.css('.rating_num::text').get()  # 电影评分
            comment = li.css('.star span:nth-child(4)::text').get().replace('人评价', '')  # 评论人数
        else:
            actor_1 = actor_list[0]
            actor_2 = 'None'
        dit = {
            '标题': title,
            '导演': actor_1,
            '演员': actor_2,
            '电影年份': movie_year,
            '拍摄国家': movie_country,
            '电影类型': movie_type,
            '电影评分': movie_num,
            '评论人数': comment,
            '电影简介': movie_sum,
        }
        csv_writer.writerow(dit)
        print(title, actor_1, actor_2, movie_year, movie_country, movie_type, movie_sum, movie_num, comment, sep='|')

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

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

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

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

相关文章

windows安装flutter

在flutter官网下载flutter 在 Windows 操作系统上安装和配置 Flutter 开发环境 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 下载文件后,解压文件把文件存放在指定位置 打开flutter_console.bat文件 输入flutter doctor flutter报错提示(…

unity-VRTK学习日记1(VRTK4|无头盔开发模拟器SpatialSimulator)

目录 前言 前期准备 1.配置VRTK4: 2.把几个插件给安装好 查看自己安装了哪些VRTK插件 3.添加模拟器 操作方法 操作方法:人话 前言 VRTK的较早版本不适用于Unity的新版本,原因好像是Unity将VR开发功能并入到自家的XR下了。就是之前更新…

即时通讯独立系统源码包含Android 、iOS、PC

demo软件园每日更新资源,请看到最后就能获取你想要的: 1.经典版哇呼星聊即时通讯独立系统源码 包含Android 、iOS、PC 自带教程 哇呼星聊即时通讯系统源码 AndroidiOSPC三端 附教程 服务器最低配置4H4G 这套安装跟shiku一样 1.安装宝塔,只安装Nginx,其他…

力扣,合并石头最低成本算法题

1:这个题有题解,自己可以去看力扣,合并石头 2:网上也有视频自己去看视频讲解 3:下面我自己的一些理解 4:原需求: 5:代码:使用贪心算法和最小堆来求解: im…

FreeRTOS系统学习-内核篇.01-数据结构---列表与列表项定义详解-链表节点插入实验

# 内核篇.01 列表与列表项 为什么要学列表?链表单向链表双向链表 FreeRTOS 中链表的实现节点节点初始化尾节点根节点链表根节点初始化将节点插入到链表的尾部将节点按照升序排列插入到链表将节点从链表删除节点带参宏小函数 链表节点插入实验实验现象 为什么要学列表…

TPM-TPM-Profile-PTP协议-2

TCG_PCClient_Device_Driver_Design_Principles_TPM2p0_v1p1_r4_211104_final.pdf 4 简介 本文档补充了 TCG PC Client Platform TPM Profile for TPM 2.0 Specification [PTP]; 特别是,本文档为有兴趣开发 DD 的 DD 编写者提供指导,以便与旨…

【C++】带你先入门类和对象(上)

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 文章目录 前言一、面向过程和面向对象初步认识二、类的引入三、类的定义四.类的访问限…

java后端为前端提供接口,将数据以树形结构返回(工具类hutool.core.lang.tree)

用于后端java的实用、简洁、通俗易懂的树形工具类使用笔记 设计需求是做一个类似于部门管理的树形结构,后端设计表写逻辑,为前端提供接口,将数据以树形结构返回 这里直接上代码,基本可以直接拿去用,把父id和名称做对…

Oracle之可视化ETL任务调度设计接口实现方案

背景 以前的项目有这么一个需求,线上的任务需要灵活的可视化配置,而一般的ETL任务调度需要写JOB的SQL脚本(需要对Oracle的dbms_job比较熟悉),而维护成本比较高,虽然可以查看执行的信息,但是权限比较高,不利于项目后台数据的安全。所以通过需求背景,自研设计任务调度平…

小程序按钮重复点击解决方案

文章目录 前言一、为什么会发生重复点击二、针对以上问题怎么处理1、分析解决方法:1. 反馈2.禁用 三、最优解决总结 前言 小程序是直面用户便捷的应用,而在用户使用时往往都会涉及到关键节点的按钮点击,例如,注册登录时&#xff…

服务百万商家的系统,发布风险如何规避?微盟全链路灰度实践

一分钟精华速览 全链路灰度发布是指在微服务体系架构中,应用的新、旧版本间平滑过渡的一种发布方式。由于微服务之间依赖关系错综复杂,一次发布可能会涉及多个服务升级,所以在发布前进行小规模的生产环境验证,让新版本的应用实例…

锂电材料浆料匀浆搅拌设备轴承经常故障如何处理?

锂电材料浆料匀浆搅拌设备是锂电池生产中重要的设备之一,用于将活性材料、导电剂、粘结剂和溶剂混合成均匀的浆料,是电极制备过程中不可或缺的步骤。然而,由于高速搅拌和化学腐蚀等因素的影响,轴承经常会出现故障,导致…

Java基础部分面试题(2023最新)

一、Java概述 1. 谈谈你对 Java 平台的理解? ① 平台无关性(一次编译到处运行) ② GC(垃圾自动回收机制,不像C那样需要手动去释放堆内存) ③ 语言特性(泛型、反射、Lambda 表达式) …

Dubbo 简易环境搭建以及使用(2)

目录 环境搭建 Dubbo的3种使用方式: 1. XML配置的方式,一般用于Spring MVC工程 2. 配置文件的方式 (spring boot工程) 3. 注解方式 Dubbo 控制台 环境搭建 本篇将介绍Spring boot zookeeper Dubbo 简易环境的搭建以及使用…

同等学力申硕如何择校?

我们常常会在一些艰难选择面前不知所措,比如说不知道选择什么样的院校学习,不知道选择什么样的专业学习,不知道同等学力申硕的具体过程,不知道这个过程中你要付出多大的代价,更不知道学习中的一些关键环节等&#xff0…

飞利浦水健康携净水新品重磅亮相AWE2023

2023年度中国家电及消费电子博览会(AWE2023)于4月27日在上海新国际博览中心正式开幕。其中,飞利浦水健康携全屋高阶净水G5系列、厨下净水器U22Pro、冰热矿净四合一台式净饮机等新品悉数亮相,在暌违2年的AWE舞台上,为行…

垃圾分类算法训练及部署

垃圾分类算法训练及部署 创建模型与编译模型训练及保存模型生成模型应用 创建模型与编译 数据加载进模型后定义模型结构,并优化损失函数。直接调用VGG-16模型作为卷积神经网络,包括13个卷积层、3个全连接层、5个池化层,后接全连接层&#xf…

终于把 vue-router 运行原理讲明白了(一)!!!

一、vue-router 用法 1.1 首先我们需要在我们的项目中,下载vue-router,我在项目中使用的是3.x版本 1.2 在项目中引入,并实例化路由实例,贴代码如下 1.3 下面代码有两个重点部分,等在第三部分具体分析 (1&a…

FAMI-Pose训练

之前写过FAMI-Pose的论文解析,最近跑了一下官方代码,链接是:FAMI-Pose,但有很多问题,感觉是不是作者上传错了。这篇博客讲一下FAMI-Pose的训练。 运行 首先,安装环境,这个根据官方requirement…

NTT入门 开拓者的卓识

link 大意: 给定一个长度为n的数组a,求[1,n]的k阶子段和 我们定义k阶子段和如下: 思路: 这个k阶字段和,就是在k-1阶的基础上,再讲所有k-1阶的子段和都相加得到k阶子段和 k是很大的,所以我…