Python爬虫-豆瓣电影Top250-各项信息爬取及xls保存!

【爬虫】Scrapy初次尝试 入门详细教程(爬取豆瓣top250电影信息) 使用scrapy爬虫框架爬取豆瓣电影Top 250的电影信息(序号、电影名、介绍、星级、评论数、描述)。包括:环境的搭建、item编写、xpath定位、spider编写、数据保存等部分。 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取 100%免费!】

Python爬虫-豆瓣电影Top250-各项信息爬取及xls保存


目的

采用python爬虫爬取豆瓣电影Top250的各项信息,包括电影信息的链接,电影图片的链接,豆瓣评分,评价人数,简介和概述等等,最后存入电子表格。


先看爬取结果

在这里插入图片描述

爬虫思路

  1. 获取网页内容
  2. 解析提取网页内容
  3. 将结果保存在xls电子表格中

实操及结果

需要导入的库有如下

用途库名作用
解析网页bs4(BeautifulSoup)能够快速方便简单的提取网页中指定的内容,给我一个网页字符串,然后使用它的接口将网页字符串生成一个对象,然后通过这个对象的方法来提取数据
信息匹配re提供了与 Perl 语言类似的正则表达式匹配操作,用于提取特定信息
网页请求urllib.request用来发送request和获取request的结果,获取网页源文件
网页请求错误处理urllib.errorurllib.request产生的异常,便于处理网页获取时的异常
数据保存xlwt在 Excel 写入数据和格式化数据的工具包,是用来生成兼容 Excel 97/2000/XP/2003, OpenOffice.org Calc 和 Gnumeric 的表格库。 xlwt 完全支持 Unicode

导入时如下

from bs4 import BeautifulSoup   # 网页解析,获取数据
import re                       # 正则,匹配提取
import urllib.request           # 网页请求
import urllib.error             # 网页请求错误处理
import xlwt                     # excel操作保存数据

爬虫源码如下(~185行)

#!/usr/bin/env python
# -- coding = 'utf-8' --
# @Python  : 3.7
# @OS      : Windows 10 kiton.
# @Time    : 2021/2/26 9:42
# @Author  : 
# @IE-mail : 1154282938@qq.com
# @File    : spider1.py
# @Software: PyCharm
from bs4 import BeautifulSoup   # 网页解析,获取数据
import re                       # 正则,匹配提取
import urllib.request           # 网页请求
import urllib.error             # 网页请求错误处理
import xlwt                     # excel操作保存数据


def main():
    # 1.爬取网页和解析数据
    base_url = "https://movie.douban.com/top250?start="
    data_list = get_data(base_url)
    # 3.保存数据
    save_path = "./豆瓣电影Top250.xls"
    save_data(data_list, save_path)


def get_data(base_url):
    # 数据提取,通过正则提取相应数据存入内存

    # 匹配模式,用于提取特定元素
    # 影片详情的链接的匹配规则
    findLink = re.compile(r'<a href="(.*?)">')  # 生成正则表达式对象,表示规则()
    # 电影图片链接
    findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)  # 忽略换行符
    # 电影名称
    findTitle = re.compile(r'<span class="title">(.*)</span>')
    # 影片评分
    findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
    # 评价人数
    findJudge = re.compile(r'<span>(\d*)人评价</span>')
    # 找到概况
    findInq = re.compile(r'<span class="inq">(.*)</span>')
    # 找到影片相关内容
    findBd = re.compile(r'<p class="">(.*?)</p>', re.S)

    # 创建一个总表
    data_list = []

    # 用于循环爬取网页,总共十页。# 根据豆瓣网页get请求规律,发现start=0为 1-25部电影
    for i in range(0, 10):          # 调用获取页面信息 的函数
        # 根据豆瓣网页get请求规律,发现start=0为 1-25部电影
        url = base_url + str(i*25)

        # 调用网页爬取函数,获取网页源码
        html = ask_url(url)

        # 逐一解析,生成soup树形结构
        soup = BeautifulSoup(html, "html.parser")

        # 分类查找符合要求的信息元素,在一个页面的25部电影循环,生成列表
        for item in soup.find_all('div', class_="item"):
            # 创建一个空列表,用于保存一个网页上25部电影的所有信息
            data = []
            item = str(item)

            # 影片详情的链接
            link = re.findall(findLink, item)[0]            # 通过正则查找指定的字符串,只要第一个
            data.append(link)

            # 图片链接
            imgSrc = re.findall(findImgSrc, item)[0]        # 只要第一个
            data.append(imgSrc)

            # 名称 有两个(中国和外国名)
            titles = re.findall(findTitle, item)
            if len(titles) == 2:
                # 添加中国名
                titles[0] = "".join(titles[0].split())      # 去掉\xa0空格
                c_title = titles[0]
                data.append(c_title)
                # 添加外国名
                titles[1] = "".join(titles[1].split())      # 去掉\xa0空格
                o_title = titles[1].replace("/", "")        # 去掉无关字符
                data.append(o_title)
            else:
                # 外国名留空,因为有可能没有
                data.append(titles[0])                      # 只要第一个
                data.append('  ')                           # 空白补位

            # 评分
            rating = re.findall(findRating, item)[0]        # 只要第一个
            data.append(rating)

            # 评价人数
            judgeNum = re.findall(findJudge, item)[0]       # 只要第一个
            data.append(judgeNum)

            # 概述
            inq = re.findall(findInq, item)
            if len(inq) != 0:                               # 判断是否为空
                inq[0] = "".join(inq[0].split())
                inq = inq[0].replace("。", "")
                data.append(inq)
            else:
                # 为空的情况下,占位添加进列表
                data.append(" ")

            # 相关内容
            bd = re.findall(findBd, item)[0]
            bd = "".join(bd.split())
            bd = re.sub('<br(\s+)?/>(\s+)?',"", bd)     # 去掉br
            bd = re.sub('/', "", bd)                    # 去掉斜杠
            data.append(bd.strip())

            # 把处理好的一部电影信息放入data_list
            data_list.append(data)

    # 该函数返回一个列表,保存有所有处理后的爬取信息
    return data_list

    # 在控制台打印爬取所有信息列表
    print(data_list)


def ask_url(url):
    # 爬取网页,得到一个指定url的网页内容

    # 请求头,伪装成浏览器(谷歌)
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
    }

    # 创建请求
    request = urllib.request.Request(url, headers=head)

    # 尝试获取请求响应
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")

    except urllib.error.URLError as e:
        #   报错打印
        if hasattr(e, "code"):
            print(e.code)
        if hasattr(e, "reason"):
            print(e.reason)

    # 该函数返回请求的网页源信息
    return html


def save_data(data_list, save_path):
    # 3.保存数据

    # 提示进入爬取信息保存环节
    print("saveing...")

    # 创建电子表格句柄,在内存中
    book = xlwt.Workbook(encoding="utf-8", style_compression=0)

    # 在上述基础上创建工作薄sheet
    sheet = book.add_sheet('豆瓣电影Top250', cell_overwrite_ok=True)

    # 将表头写入工作薄
    col = ("电影详情链接", "图片链接", "影片中文名", "影片外文名", "评分", "评价数",  "概况", "相关信息")
    for i in range(0, 8):
        sheet.write(0, i, col[i])  # 列名

    # 将爬取的信息写入工作薄
    for i in range(0, 250):
        print("第%d条" % i)
        data = data_list[i]
        for j in range(0, 8):
            sheet.write(i+1, j, data[j])   # 数据

    # 将内存中的工作薄保存到硬盘中的电子表格文件中
    book.save(save_path)  # 保存


if __name__ == "__main__":

    # 主程序入口
    main()

    # 提醒爬取和保存完毕
    print("爬取完毕并已保存为电子表格")


控制台部分输出结果如下:

saveing...
第0条
第1条
第2条
第3条
......
第247条
第248条
第249条
爬取完毕并已保存为电子表格

爬取信息保存为电子表格后结果如下图:

在这里插入图片描述

基本上信息完整,调整美化表格后就可以使用了,如下图:

在这里插入图片描述

美化后的表格


最后,如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上:
包括:Python安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

在这里插入图片描述

爬取豆瓣Top250数据并且可视化 阅读详情

相关推荐

Python爬虫超详细讲解(零基础入门,包教包会)

先看后赞,养成习惯。

weixin_68789096的博客 1669

Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: 注重版权,转载请注明原作者和原文链接 作者:码农BookSea 原文链接:https://blog.youkuaiyun.com/bookssea/article/detail

ChenBinBini的博客 31万+

贝叶斯神经网络(Bayesian Neural Network)

最近在研究贝叶斯神经网络,一些概念一直搞不清楚,这里整理一下相关内容,方便以后查阅。

梁小憨憨的博客 3655

Python数据爬取超详细讲解(零基础入门,老年人都看的懂)

关于Python爬虫的超详细讲解,用例子来给大家一步步分析爬虫的代码原理,由浅入深,老年人来了,我也给你整明白。

BookSea的博客 54万+

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

ε-差分隐私之拉普拉斯噪声机制(定义 + 证明 + 代码)

ε-差分隐私之拉普拉斯噪声机制 差分隐私的描述 1-范式的定义:使用matlab调用函数norm(x, 1) 更多范式见 范式 差分隐私的定义应该满足 拉普拉斯噪声的证明全过程如下: DP方向差分隐私证明是基本入门!!! -拉普拉斯噪声分布代码 Laplace分布的概率密度函数的形式是: 使用python - matplotlib来绘制概率分布图: import matplotlib.pyplot as plt import numpy as np def laplace_fun

毕业才是起点 1万+

Python爬虫超详细讲解(零基础入门,老年人都看的懂)!

注重版权,转载请注明原作者和原文链接 作者:码农BookSea 原文链接:https://blog.youkuaiyun.com/bookssea/article/details/107309591 先看后赞,养成习惯。 点赞收藏,人生辉煌。 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

爬遍所有网站 3万+

DAC60501与STM32的I2C通信实战:从寄存器配置到电压输出

本文详细介绍了如何使用STM32通过I2C通信驱动DAC60501数模转换器,实现精确的模拟电压输出。内容涵盖从硬件连接到软件模拟I2C驱动编写,再到DAC寄存器配置与电压计算的全流程实战指南,并提供了关键的驱动实例代码和常见问题调试技巧,帮助开发者快速掌握这一嵌入式开发中的实用技能。

weixin_29197835的博客 366

超简单的豆瓣电影Top前250影片基本信息爬取

记录一篇简单的爬虫经历~豆瓣电影250top_百度搜索https://www.baidu.com/s?word=%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1250top&tn=25017023_10_pg&lm=-1&ssl_s=1&ssl_c=ssl1_1721136aead 爬虫内容参考阿优乐扬的博客-优快云博客https://blog.youkuaiyun.com/ayouleyang/article/details/96023950? 爬取到的内容如

weixin_45630006的博客 3009

手把手写深度学习(27):如果获得相机位姿态的plücker embedding?以RealEstate10K为例

用plücker embedding表示相机的位姿是一种非常常用的方法,这篇博客以RealEstate10K数据集为例子,详细讲解如何从相机的轨迹坐标中获得plücker embedding,用于下一步模型的学习。

沉迷单车的追风少年 2239

YOLOv11改进:引入SSA序列打乱注意力模块与MSCSA二次创新模块,适配目标检测、图像分类与实例分割

YOLOv11改进:引入SSA与MSCSA模块提升CV任务性能 摘要: 本文提出在YOLOv11中集成SSA(序列打乱注意力)和MSCSA(多尺度上下文序列打乱注意力)模块,以解决计算机视觉任务中的关键挑战。SSA通过序列打乱和局部窗口注意力机制,在降低计算复杂度的同时增强长距离依赖建模能力;MSCSA进一步引入多尺度上下文融合和动态序列打乱策略,优化了多尺度目标检测和实例分割的边界特征处理。这些改进有效解决了传统注意力机制在全局上下文建模、局部细节保持和序列顺序敏感性方面的不足。实验表明,该方法在目标检测

走向CTO的路上... 858

Python爬虫超详细讲解(零基础入门)

讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程)网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。过去,我们通过书籍、报纸、电视、广播或许信息,这些信息数量有限,且是经过一定的筛选,信息相对而言比较有效,但是缺点则是信息面太过于狭窄了。

xiangxueerfei的博客 2987

硬件学习手册【总目录】

欢迎大家来到《硬件学习手册》,专栏主要包括 《硬件经验手册》《电子元器件器件手册》《PCB手册》《CPU手册》《元器件选型手册》五个分册。在开始专栏的更新前,博主先列出专栏的大纲,以供大家参考。大家直接点击大纲中的蓝色标题即可轻松传送。

fydar的博客 5854

爬取豆瓣TOP250电影并保存为excel文件与db文件,有网页展示哦!

任务介绍 基本流程 在豆瓣上通过F12调试,可以看出我们需要爬取的内容在<div class="item">这里 下面废话不多说直接上代码: from bs4 import BeautifulSoup # 网页解析,获取数据 import re # 正则表达式,进行文字匹配 import urllib.request, urllib.error # 制定URL,获取网页数据 import xlwt # 进行excel操作 def main(): baseurl = "ht

JulyLi2019的博客 1645

R语言中的混淆矩阵(Confusion Matrix)是一种常用的评估多分类模型性能的工具

除了准确率,混淆矩阵还提供了其他有用的指标,如灵敏度(Sensitivity)、特异度(Specificity)、精确度(Precision)和召回率(Recall)。混淆矩阵通过比较模型预测结果与实际标签的一致性,帮助我们了解模型的分类准确性和错误类型。此外,混淆矩阵还提供了各种错误类型的统计信息,如假阳性(False Positive)和假阴性(False Negative)等。通过混淆矩阵,我们可以了解模型的整体性能和错误类型,从而对模型进行评估和改进。最后,为了更好地理解混淆矩阵的结果,可以使用。

HackSquad的博客 972

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

新手入门Python爬虫的全流程详解

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

python03011的博客 2293

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python 爬取周杰伦歌曲信息,爬取豆瓣top250的电影,并保存至excel中

使用requests、BeautifulSoup模块,在网上爬取信息。有的网页可以直接爬取到,有些则需要分步加载,这时就需要使用network进行分析找到信息对应的请求。 有的会反爬虫,则需要添加headers信息,user-agent会存放访问网站的浏览器,我们需要伪装成浏览器进行爬取。 有时候返回的信息是个json文件,则需要将json转换成dict字典。 1.爬取周杰伦歌曲 示例1:需要用到request headers,network,query string parameters,jso.

qq_24127015的博客 1157

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python爬虫零基础(以爬豆瓣电影top250为例,尝试自己写爬豆瓣读书top250的代码)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qazwsxedc__1的博客 1698

python网络爬虫爬取数据,如何用python爬取数据

大家好,小编来为大家解答以下问题,python网络爬虫爬取数据,如何用python爬取数据,今天让我们一起来看看吧!本文已收录至Github,推荐阅读 👉本文是根据视频教程记录的学习笔记,建议结合视频观看。先看后赞,养成习惯。讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程)

2301_81900386的博客 883

Python爬虫超详细讲解(零基础入门,初中生都看的懂)

前言:我分享的都是一些自己的学习经历和干货,关于我的系统学习路线,和一些实战教程,都打包整理好了,大家可以到777899409这个扣扣群里面找管理白嫖。如果能对你有帮助,还希望能帮忙点赞、关注、收藏,大家的鼓励,是我分享的动力!(给大家鞠躬了) 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够..

m0_60719784的博客 7515

如何用python爬取网页数据,python爬取网页数据步骤

本文已收录至Github,推荐阅读 👉本文是根据视频教程记录的学习笔记,建议结合视频观看。先看后赞,养成习惯。讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程)

Bxwfjdjdbdgj的博客 1290

python数据爬取的基本原理,python爬取数据的原理

大家好,给大家分享一下python数据爬取的基本原理,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!本文已收录至Github,推荐阅读 👉本文是根据视频教程记录的学习笔记,建议结合视频观看。先看后赞,养成习惯。讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程)

chatgpt001的博客 1021

python爬取豆瓣电影top250并保存为xlsx_python抓取豆瓣电影Top250数据并写入Excel

doubanpython抓取豆瓣电影Top250数据并写入Excel1.将目标网站上的页面抓取下来2.将抓取下来的数据根据一定的规则进行提取create table `tb_movie`(id int(11) primary key auto_increment,title varchar(255),score varchar(255),date varchar(255),region varch...

weixin_32201711的博客 1469
上一篇: 超详细Python+Pycharm保姆级安装教程,Python环境配置和使用指南,看这一篇就足够了!
下一篇: 整理了几个Python经典项目(Python爬虫、Python人工智能、Python数据分析、Python Web、Python办公自动化、Python游戏)!
Python_trys
博客等级 码龄2年 4370粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值