Python爬虫实战-批量爬取豆瓣电影排行信息

大家好,我是python222小锋老师。

近日锋哥又卷了一波Python实战课程-批量爬取豆瓣电影排行信息,主要是巩固下Python爬虫基础

视频版教程:

Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取豆瓣电影排行信息 视频教程作者:小锋老师官网:www.python222.com, 视频播放量 344、弹幕量 0、点赞数 13、投硬币枚数 7、收藏人数 18、转发人数 0, 视频作者 java1234官方, 作者简介 公众号:java1234 微信:java9266,相关视频:Python爬虫实战-批量爬取下载网易云音乐,Python爬虫实战-批量爬取美女图片网下载图片 视频教程,这个视频可能会得罪很多人..终极爬虫JS逆向教程!突破反爬虫防御的终极指南,从入门到实战,就没有爬不了的网站!,【Python爬虫教程】你敢学我就敢发!300集从入门到入狱(完整版)胆小勿学!全程干货无废话,学完即可兼职接单!,2024 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 【无废话版】,【Python爬虫】三分钟教你免费下载全网VIP音乐,音乐一键下载免费听,告别付费时代,小白也能学得会,附源码!,【Python爬虫】手把手教你爬取百度文库PPT文档,破解百度文库收费限制,下载PPT再也没花过钱!,【B站第一】清华大佬196小时讲完的Python入门学习教程!从小白到大神!整整300集,全干货无废话,学完即可就业!允许白嫖!!,【2023百度文库VIP文档PPT免费下载】Python白嫖百度文库付费VIP文档,破解百度文库收费限制,零基础白嫖教程!!!,【Python教程】一分钟轻松实现观影自由,教你用Python免费看电影,代码可分享 | Python爬虫教程icon-default.png?t=N7T8https://www.bilibili.com/video/BV1aN411u7o5/

爬虫目标网站:

https://movie.douban.com/top250

经过分析,一共10页,第二页,第二页,...,第10页的规律是:

分页规律 第N页https://movie.douban.com/top250?start=25*(N-1)&filter=

爬取网页,解析数据,处理数据,我们最终把数据存入Excel。

因为涉及到分页,所以我们要对解析url,解析网页,导出Excel代码,进行封装,方便复用。

解析请求,爬取网页方法:

def crawl_html(url):"""解析请求,爬取网页:param url: 请求地址:return: 网页源码"""response = requests.get(url=url, headers=headers)return response.text

解析网页源码方法:

def parse_html(html):"""解析网页源码:param html: 页面源码:return: 页面 电影对象信息列表   [ {'':''},{},{}  ]"""# 实例化soupsoup = BeautifulSoup(html, "lxml")# 获取所有电影DOMmovie_list = soup.select("ol.grid_view li")# print(movie_list)# 电影数据对象列表movie_data_list = []for movie in movie_list:try:rank = movie.select_one("div.pic em").text  # 获取排名title = movie.select_one("div.info span.title").text  # 获取电影名称info = movie.select_one("div.bd p").text.strip()  # 获取电影描述信息rating_num = movie.select_one("div.star span.rating_num").text  # 获取评分comment_count = movie.select("div.star span")[3].text.replace("人评价", "")  # 获取评论数quete_dom = movie.select_one("p.quote span.inq")quote = ""if quete_dom:quote = quete_dom.text# quote = movie.select_one("p.quote span.inq").text  # 获取电影描述movie_data_list.append({"rank": rank,"title": title,"info": info,"rating_num": rating_num,"comment_count": comment_count,"quote": quote})except:print(movie.select_one("div.pic em").text, "异常", traceback.print_exc())continuereturn movie_data_list

导出Excel方法:借助pandas库

def export_excel(datas):"""导出数据到Excel:param datas: 数据:return:"""df = pd.DataFrame(datas)df.to_excel("豆瓣电影TOP250.xlsx")

完整源码参考:具体代码解释,参考帖子顶部的视频教程。

"""豆瓣电影 Top 250 抓取电影信息,存到excel里面使用requests爬取网页,使用bs4解析数据,使用pandas将数据写入Excel目标网页:https://movie.douban.com/top250分页规律 第N页https://movie.douban.com/top250?start=25*(N-1)&filter=作者:小锋老师官网:www.python222.com
"""import traceback
import requests
from bs4 import BeautifulSoup
import pandas as pdheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}url = "https://movie.douban.com/top250?start=0&filter="def crawl_html(url):"""解析请求,爬取网页:param url: 请求地址:return: 网页源码"""response = requests.get(url=url, headers=headers)return response.textdef parse_html(html):"""解析网页源码:param html: 页面源码:return: 页面 电影对象信息列表   [ {'':''},{},{}  ]"""# 实例化soupsoup = BeautifulSoup(html, "lxml")# 获取所有电影DOMmovie_list = soup.select("ol.grid_view li")# print(movie_list)# 电影数据对象列表movie_data_list = []for movie in movie_list:try:rank = movie.select_one("div.pic em").text  # 获取排名title = movie.select_one("div.info span.title").text  # 获取电影名称info = movie.select_one("div.bd p").text.strip()  # 获取电影描述信息rating_num = movie.select_one("div.star span.rating_num").text  # 获取评分comment_count = movie.select("div.star span")[3].text.replace("人评价", "")  # 获取评论数quete_dom = movie.select_one("p.quote span.inq")quote = ""if quete_dom:quote = quete_dom.text# quote = movie.select_one("p.quote span.inq").text  # 获取电影描述movie_data_list.append({"rank": rank,"title": title,"info": info,"rating_num": rating_num,"comment_count": comment_count,"quote": quote})except:print(movie.select_one("div.pic em").text, "异常", traceback.print_exc())continuereturn movie_data_listdef export_excel(datas):"""导出数据到Excel:param datas: 数据:return:"""df = pd.DataFrame(datas)df.to_excel("豆瓣电影TOP250.xlsx")datas = []  # 所有电影数据
for i in range(1, 11):  # 遍历10页start = 25 * (i - 1)url = f"https://movie.douban.com/top250?start={start}&filter="print(url)movie_data_list = parse_html(crawl_html(url))datas += movie_data_listexport_excel(datas)

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

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

相关文章

每日一题(LeetCode)----链表--链表中的下一个更大节点

每日一题(LeetCode)----链表–链表中的下一个更大节点 1.题目(1019. 链表中的下一个更大节点) 给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第…

停车管理系统

1 用户信息管理 2 车位信息管理 3 车位费用设置 4 停泊车辆查询 5 车辆进出管理 6 用户个人中心 7 预定停车位 8 缴费信息 9 业务逻辑详解 1 用户停车:user用户登录,在预定停车位菜单,选择一个车位点击预定即可 2 车辆驶出:admin…

【ArcGIS Pro微课1000例】0038:基于ArcGIS Pro的人口密度分析与制图

文章目录 一、人口密度二、人口密度分析1. 点密度分析2. 核密度分析三、结果比对一、人口密度 人口密度是指单位土地面积上居住的人口数,通常以每平方千米或每公顷内的常住人口为单位计算。人口密度同资源、经济密切结合,因此,科学准确地分析人口密度的分布情况,对合理制定…

kubernetes使用nfs创建pvc部署mysql stateful的方法

kubernetes创建的pod默认都是无状态的,换句话说删除以后不会保留任何数据。 所以对于mysql这种有状态的应用,必须使用持久化存储作为支撑,才能部署成有状态的stateful. 最简单的方法就是使用nfs作为网络存储,因为nfs存储很容易被…

无需公网IP,使用MCSM面板一键搭建我的世界Minecraft服务器联机游戏

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 前言 MCSManager是一个…

基于springboot网上超市管理系统

基于springboot网上超市管理系统 摘要 随着互联网的快速发展,电子商务行业迎来了蓬勃的发展,网上超市作为电子商务的一种形式,为消费者提供了便利的购物体验。本文基于Spring Boot框架,设计和实现了一个网上超市管理系统&#xff…

图的邻接矩阵,邻接表的C语言实现(408真题)

图的邻接矩阵 数据结构定义 #define MAXV 50;//顶点数目的最大值 typedef struct{int vex[MAX]; //顶点表 int edge[MAXV][MAXV]; //邻接矩阵 int edgeNum,vexNum; //图中实际的边数和顶点数 }MGraph;初始化 void Matrix_Init(MGraph *Mgraph) {int v1, v2;//存储有边的…

Redis key的类型以及命令

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

[AutoSAR 存储] 汽车智能座舱的存储需求

公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《AutoSAR 存储》 <<<< 返回总目录 <<<< 1 智能座舱的发展&#xff1a; 1.1 发展历史 车辆信息娱乐系统的发展可以分为三个阶段。 机械化阶段 在上世纪90年代&#xff0c;车辆仪表盘…

动手学深度学习(四)---多层感知机

文章目录 一、理论知识1.感知机2.XOR问题3.多层感知机4.多层感知机的从零开始实现 【相关总结】1.torch.randn()2.torch.zeros_like() 一、理论知识 1.感知机 给定输入x,权重w&#xff0c;和偏移b,感知机输出&#xff1a; 2.XOR问题 感知机不能拟合XOR问题&#xff0c;他…

【2023 云栖】阿里云田奇铣:大模型驱动 DataWorks 数据开发治理平台智能化升级

云布道师 本文根据 2023 云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;田奇铣 | 阿里云 DataWorks 产品负责人 演讲主题&#xff1a;大模型驱动 DataWorks 数据开发治理平台智能化升级 随着大模型掀起 AI 技术革新浪潮&#xff0c;大数…

2017年8月3日 Go生态洞察:贡献者峰会探秘

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

信息学奥赛一本通1331:【例1-2】后缀表达式的值

1331&#xff1a;【例1-2】后缀表达式的值 时间限制: 10 ms 内存限制: 65536 KB 提交数: 54713 通过数: 13547 【题目描述】 从键盘读入一个后缀表达式&#xff08;字符串&#xff09;&#xff0c;只含有0-9组成的运算数及加&#xff08;&#xff09;、减&#xf…

Flutter开发警告Constructors in ‘@immutable‘ classes should be declared as ‘const‘

文章目录 警告信息报错代码警告原因修改后的代码 警告信息 Flutter开发遇到如下警告 Constructors in ‘immutable’ classes should be declared as ‘const’. 报错代码 class TaskWidget extends StatefulWidget {final String title;final bool isChecked;final int ord…

Java中static、final、static final的区别

文章目录 finalstaticstatic final final final可以修饰&#xff1a;属性&#xff0c;方法&#xff0c;类&#xff0c;局部变量&#xff08;方法中的变量&#xff09; final修饰的属性的初始化可以在编译期&#xff0c;也可以在运行期&#xff0c;初始化后不能被改变。 final修…

案例-某验四代滑块反爬逆向研究二

系列文章目录 第一部分 案例-某验四代滑块反爬逆向研究一 第二部分 案例-某验四代滑块反爬逆向研究二 文章目录 系列文章目录前言一、js文件加载先后顺序二、每次刷新都会初始化 device_id, 所以追栈可以知道它从哪执行的三、删除node中的检测点&#xff08;vm忽视&#xff09…

Cesium-terrain-builder编译入坑详解

本以为编译cesium-terrian-tools编译应该没那么难&#xff0c;不想问题重重&#xff0c;不想后人重蹈覆辙&#xff0c;也记录下点点滴滴。 目前网上存在的cesium代码版本主要有两个分支&#xff1a; 原始网站【不能生成layer文件&#xff0c;且经久不更新&#xff0c;使用gdal…

[PyTorch][chapter 64][强化学习-DQN]

前言&#xff1a; DQN 就是结合了深度学习和强化学习的一种算法&#xff0c;最初是 DeepMind 在 NIPS 2013年提出&#xff0c;它的核心利润包括马尔科夫决策链以及贝尔曼公式。 Q-learning的核心在于Q表格&#xff0c;通过建立Q表格来为行动提供指引&#xff0c;但这适用于状态…

YOLOv5改进 | 添加SE注意力机制 + 更换NMS之EIoU-NMS

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。为提高算法模型在不同环境下的目标识别准确率&#xff0c;提出一种基于改进 YOLOv5 深度学习的识别方法&#xff08;SE-NMS-YOLOv5&#xff09;&#xff0c;该方法融合SE&#xff08;Squeeze-and-Excitation&#xff09;注…

【pytest】Hooks函数之统计测试结果(pytest_terminal_summary)

前言 用例执行完成后&#xff0c;我们希望能获取到执行的结果&#xff0c;这样方便我们快速统计用例的执行情况。 也可以把获取到的结果当成总结报告&#xff0c;发邮件的时候可以先统计测试结果&#xff0c;再加上html的报告。 pytest_terminal_summary 关于TerminalReporter…