【爬虫实战】最新python豆瓣热榜Top250

news2025/1/22 16:45:36

一.最终效果

豆瓣是大多数新手练习爬虫的

二.数据定位过程

对于一个目标网站,该如何快速判定页面上的数据来源?首先你需要简单web调试能力,对大多数开发者来说都chrome浏览器应该是不二选择,当然我选中的也是。F12打开调试面板,如下图:


如果数据是来自服务端API接口,当你按上图操作翻页时,右侧空白面板处会出现请求记录,此时页面数据就是通过接口返回的;如果像上面这种,翻页操作之后还是空白,说明数据不是通过接口返回的。那接下来就需要我们定位页面元素位置了,操作如下图:

接下来就需要一个个解析我们需要的字段了;

三.编写代码

安装项目依赖库:

pip install pandas bs4

引入:

from bs4 import BeautifulSoup

使用:

soup = BeautifulSoup(html, 'html.parser')
elements = soup.select('#content .grid_view li')

注意:soup.select返回的也是soup对象,可以继续元素的查找:

for card in elements:
    pic = card.select_one('.item .pic')
    # 序号
    index = pic.select_one('em').text
    # logo
    img = pic.select_one('img')
    # 电影名称
    title = card.select_one('.item .info .hd a').get_text(strip=True)
    ...

四.保存数据

保存数据我们还是使用pandas(如果对pandas不了解的可以到我主页看我前几期分享关于pandas的文章):
Todo:

    def data_to_save(self, list, page):
        df = pd.DataFrame(list)
        print("数据保存中...")
        if page == 1:
            has_file = self.check_data()
            if not has_file:
                df.to_csv(self.file_path, index=False, columns=[
                          "index", "title", "playable", "intro", "rating", "reviews", "comment"])
                return
        df.to_csv(self.file_path, index=False, mode='a', header=False)

注意如果不是首次添加数据,需要使用mode='a’追加模式,这样加入的数据没有表头;

五.打包成exe

打包成exe使用工具pyinstaller,如果对这个库不熟悉的同学可以到我的主页查看历史分享:
Todo:

pyinstaller -F -c main.py (没有 main.spec 文件用此命令)
或者
pyinstaller main.spec (有 main.spec 文件用此命令)

六.运行过程

防止爬取太快被拉黑,请设置请求延迟区间(请求时根据输入的区间随机延迟n秒)
请输入延迟区间的开始时间(默认请回车): 1
请输入延迟区间的结束时间(默认请回车): 3
输入获取的页码数(回车默认-1获取全部): 6
开始请求第1页...
开始解析第1页数据...
数据保存中...
共有250页:
随机延时几秒: 2.847s
开始请求第2页...
开始解析第2页数据...
数据保存中...
随机延时几秒: 1.6s
开始请求第3页...
开始解析第3页数据...
数据保存中...
随机延时几秒: 2.472s
开始请求第4页...
开始解析第4页数据...
数据保存中...
随机延时几秒: 2.756s
开始请求第5页...
开始解析第5页数据...
数据保存中...
随机延时几秒: 2.598s
开始请求第6页...
开始解析第6页数据...
数据保存中...

完整代码、项目说明文档、爬取结果数据csv文件、exe文件都放入源码包中;文章最后可获取;

七.获取完整源码

爱学习的小伙伴,本次案例的完整源码,已上传微信公众号“一个努力奔跑的snail”,后台回复 豆瓣 即可获取。

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

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

相关文章

Vite 了解

1、vite 与 create-vite 的区别 2、vite 解决的部分问题 3、vite配置文件的细节 3.1、vite语法提示配置 3.2、环境的处理 3.3、环境变量 上图补充 使用 3.4、vite 识别,vue文件的原理 简单概括就是,我们在运行 npm润dev 的时候,vite 会搭起…

springboot+mysql实现就业信息管理系统

springbootmysql实现的就业信息管理系统,有普通用户和管理员两种角色,演示地址:yanshi.ym4j.com:8091 普通用户账号:test 密码:123456管理员账号:admin 密码:123456 共包含就业信息管理、就业统计、用户管理等功能。 登录 就业信…

网络通信概述

文章目录 IP地址端口号协议三要素作用 五元组协议分层OSI七层模型TCP/IP 五层模型应用层传输层网络层数据链路层物理层 封装和分用发送方 - 封装中间转发接收方 - 分用 一般认为计算机网络就是利用通信线路和通信设备将地理上分散的、具有独立功能的多个计算机系统按不同的形式…

Qt 天气预报项目

参考引用 QT开发专题-天气预报 1. JSON 数据格式 1.1 什么是 JSON JSON (JavaScript Object Notation),中文名 JS 对象表示法,因为它和 JS 中对象的写法很类似 通常说的 JSON,其实就是 JSON 字符串,本质上是一种特殊格式的字符串…

销门!销售秘籍都在这了

很多刚进销售行业,或者初入职场的小白,肯定会有这一段迷茫/茫然期:为什么同事每天都有客户打电话/实地拜访呢? 而自己却无所事事,也没有客户找我,也不知道去哪里拜访客户。 这个阶段对于销售小白来说是很…

联想SR660 V2服务器使用默认用户登录BMC失败

新到了一台服务器,使用默认用户登录BMC失败 登录失败提示:账号或密码错误 解决方案: 1、重置BMC 2、新增用户 开机后在出现 ThinkServer 界面按 F1,进入 BIOS 界面 进入 System Settings-BMC Configuration 菜单相关&#xf…

聊聊VMware vSphere

VMware vSphere是一种虚拟化平台和云计算基础设施解决方案,由VMware公司开发。它为企业提供了一种强大的虚拟化和云计算管理平台,能够在数据中心中运行、管理和保护应用程序和数据。vSphere平台与VMware ESXi虚拟化操作系统相结合,提供了完整…

1992-2021年区县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年区县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:区县数据 4、指标解释&a…

从零开始:PHP实现阿里云直播的简单方法!

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前,首先需要在阿里云控制台中创建直播应用,然后获取推流地址和播放地址。 推流地址一般格式为: rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

(亲测有效)解决windows11无法使用1500000波特率的问题

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 1、问题描述 从图1可以看出串口是正常的,安装的驱动是CP210xVCPInstaller_x64.exe,但是从图2可以看出,串口拒…

【刷题】DFS

DFS 递归: 1.判断是否失败终止 2.判断是否成功终止,如果成功的,记录一个成果 3.遍历各种选择,在这部分可以进行剪枝 4.在每种情况下进行DFS,并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…

GEE 23:基于GEE实现物种分布模型之随机森林法

基于GEE实现物种分布模型之随机森林法 1.物种分布数据2.研究区绘制3.预测因子选择 1.物种分布数据 根据研究目的和需要导入物种数据: // Load presence data var Data ee.FeatureCollection("users/************736/Distribution"); print(Original da…

超好用的IDEA插件

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

设计模式 【Adapter 模式】

Adapter 模式 1.什么是 Adapter 模式 用来填补现有的程序和所需的程序之间差异的设计模式就是 Adapter 模式。 Adapter 模式有两种: ● 类适配器模式,即使用继承的适配器 ● 对象适配器模式,即使用委托的适配器 2.使用继承的适配器示例…

远程文件包含漏洞

远程文件包含漏洞 配置相关的文件包含 allow_url_fopen On/Off 通过远程方式打开文件(开启或关闭) allow_url_include On/Off 通过远程方式包含文件(开启或关闭) server2016为受害者 IP为10.9.46.226 文件包含的页面 ser…

RabbitMQ消息的应答

消息的应答机制 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个…

uniapp打包ios有时间 uniapp打包次数

我们经常用的解决方案有,分包,将图片上传到服务器上,减少插件引入。但是还有一个方案好多刚入门uniapp的人都给忽略了,就是在源码视图中配置,开启分包优化。 1.分包 目前微信小程序可以分8个包,每个包的最大存储是2M,也就是说你文件总体的大小不能超过16M,每个包的大…

前端开发_HTML

简介 CSS用于美化内容 HTML用于摆放内容 可以理解为HTML是基础&#xff0c;CSS是工具 HTML定义 HTML 超文本标记语言——HyperText Markup Language 超文本——链接 标记——标签&#xff0c;即带尖括号的文本 标签语法 双标签 开始标签&#xff1a; <xxx> 即尖…

模糊C均值聚类(Fuzzy C-means clustering,FCM)的基本概念,详细流程以及广泛应用!

文章目录 1.基本概念2. FCM的详细流程3.FCM的应用 1.基本概念 模糊C均值聚类&#xff08;Fuzzy C-means clustering&#xff0c;FCM&#xff09;是一种软聚类方法&#xff0c;它允许数据点属于多个聚类中心&#xff0c;每个聚类中心都有一个权重。与传统的硬聚类方法&#xff…

hyper-V操作虚拟机ubuntu 22.03

安装hyper-V 点击卸载程序 都勾选上即可 新建虚拟机&#xff0c;选择镜像文件 选择第一代即可 设置内存 配置网络 双击 启动安装虚拟机 输入用户名 zenglg 密码&#xff1a;LuoShuwen123456 按照enter键选中openssh安装 安装中 安装完成 选择重启 输入用户名、密码