【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】

这篇具有很好参考价值的文章主要介绍了【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

英杰社区https://bbs.csdn.net/topics/617804998

一、背景     

   近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程

序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。

        程序包含以下几个部分:

           导入模块:程序导入了 BeautifulSoup、re、urllib.request、urllib.error、xlwt等模块。

        定义函数:

  • geturl(url):接收一个URL参数,返回该URL页面内容。
  • getdata(baseurl):接收一个基础URL参数,遍历每一页的URL,获取电影信息数据,以列表形式返回。
  • savedata(datalist,savepath):接收电影信息数据和保存路径参数,将数据保存到Excel文件中。

二、导入必要的模块:

       代码首先导入了需要使用的模块:requests、lxml和csv。

import requests
from lxml import etree
import csv

        如果出现模块报错

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

        进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple

阿里云
https://mirrors.aliyun.com/pypi/simple/

豆瓣
https://pypi.douban.com/simple/ 

百度云
https://mirror.baidu.com/pypi/simple/

中科大
https://pypi.mirrors.ustc.edu.cn/simple/

华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/

腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

    

 三、定义了函数来解析每个电影的信息:

        设置了请求头部信息,以模拟浏览器的请求,函数返回响应数据的JSON格式内容。

def getSource(url):
    # 反爬 填写headers请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
    }

    response = requests.get(url, headers=headers)
    # 防止出现乱码
    response.encoding = 'utf-8'
    # print(response.text)
    return response.text

        如何获取请求头:

        火狐浏览器:

  1. 打开目标网页并右键点击页面空白处。
  2. 选择“检查元素”选项,或按下快捷键Ctrl + Shift + C(Windows)
  3. 在开发者工具窗口中,切换到“网络”选项卡。
  4. 刷新页面以捕获所有的网络请求。
  5. 在请求列表中选择您感兴趣的请求。
  6. 在右侧的“请求标头”或“Request Headers”部分,即可找到请求头信息。

     将以下请求头信息复制出来即可

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

 四、源代码:

        该爬虫程序使用了Python的第三方库BeautifulSoup和正则表达式模块,通过解析HTML页面并进行匹配,提取了电影详情链接、图片链接、影片中文名、影片外国名、评分、评价数、概述以及相关信息等数据,最后将这些数据保存到Excel文件中。

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

from bs4 import BeautifulSoup
import  re  #正则表达式,进行文字匹配
import urllib.request,urllib.error #指定URL,获取网页数据
import xlwt  #进行excel操作


def main():
    baseurl = "https://movie.douban.com/top250?start="
    datalist= getdata(baseurl)
    savepath = ".\\豆瓣电影top250.xls"
    savedata(datalist,savepath)

#compile返回的是匹配到的模式对象
findLink = re.compile(r'<a href="(.*?)">')  # 正则表达式模式的匹配,影片详情
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)  # 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>')  # 找到评价人数 #\d表示数字
findInq = re.compile(r'<span class="inq">(.*)</span>')  # 找到概况
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)  # 找到影片的相关内容,如导演,演员等



##获取网页数据
def  getdata(baseurl):
    datalist=[]
    for i in range(0,10):
        url = baseurl+str(i*25)     ##豆瓣页面上一共有十页信息,一页爬取完成后继续下一页
        html = geturl(url)
        soup = BeautifulSoup(html,"html.parser") #构建了一个BeautifulSoup类型的对象soup,是解析html的
        for item in soup.find_all("div",class_='item'): ##find_all返回的是一个列表
            data=[]  #保存HTML中一部电影的所有信息
            item = str(item) ##需要先转换为字符串findall才能进行搜索
            link = re.findall(findLink,item)[0]  ##findall返回的是列表,索引只将值赋值
            data.append(link)

            imgSrc = re.findall(findImgSrc, item)[0]
            data.append(imgSrc)

            titles=re.findall(findTitle,item)  ##有的影片只有一个中文名,有的有中文和英文
            if(len(titles)==2):
                onetitle = titles[0]
                data.append(onetitle)
                twotitle = titles[1].replace("/","")#去掉无关的符号
                data.append(twotitle)
            else:
                data.append(titles)
                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 = inq[0].replace("。", "")
                data.append(inq)
            else:
                data.append(" ")

            bd = re.findall(findBd, item)[0]
            bd = re.sub('<br(\s+)?/>(\s+)?', " ", bd)
            bd = re.sub('/', " ", bd)
            data.append(bd.strip())  # 去掉前后的空格
            datalist.append(data)
    return  datalist

##保存数据
def  savedata(datalist,savepath):
    workbook = xlwt.Workbook(encoding="utf-8",style_compression=0) ##style_compression=0不压缩
    worksheet = workbook.add_sheet("豆瓣电影top250",cell_overwrite_ok=True) #cell_overwrite_ok=True再次写入数据覆盖
    column = ("电影详情链接", "图片链接", "影片中文名", "影片外国名", "评分", "评价数", "概况", "相关信息")  ##execl项目栏
    for i in range(0,8):
        worksheet.write(0,i,column[i]) #将column[i]的内容保存在第0行,第i列
    for i in range(0,250):
        data = datalist[i]
        for j in range(0,8):
            worksheet.write(i+1,j,data[j])
    workbook.save(savepath)


##爬取网页
def geturl(url):
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
    }
    req = urllib.request.Request(url,headers=head)
    try:   ##异常检测
     response = urllib.request.urlopen(req)
     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

if __name__ == '__main__':
    main()
    print("爬取成功!!!")

五、详解代码

        导入所需模块,包括`BeautifulSoup`、`re`、`urllib`和`xlwt`。

from bs4 import BeautifulSoup
import  re  # 正则表达式,进行文字匹配
import urllib.request,urllib.error  # 指定URL,获取网页数据
import xlwt  # 进行excel操作

        主函数,主要包含三个步骤:获取数据、保存数据和打印成功信息。

def main():
    baseurl = "https://movie.douban.com/top250?start="
    datalist = getdata(baseurl)
    savepath = ".\\豆瓣电影top250.xls"
    savedata(datalist, savepath)

        这里使用正则表达式对html页面进行匹配,获取需要的信息,返回的是匹配到的模式对象。 


##compile返回的是匹配到的模式对象
findLink = re.compile(r'<a href="(.*?)">')  # 正则表达式模式的匹配,影片详情
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)  # 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>')  # 找到评价人数 #\d表示数字
findInq = re.compile(r'<span class="inq">(.*)</span>')  # 找到概况
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)  # 找到影片的相关内容,如导演,演员等

获取网页数据的函数,包括以下步骤:
1. 循环10次,依次爬取不同页面的信息;
2. 使用`urllib`获取html页面;
3. 使用`BeautifulSoup`解析页面;
4. 遍历每个div标签,即每一部电影;
5. 对每个电影信息进行匹配,使用正则表达式提取需要的信息并保存到一个列表中;
6. 将每个电影信息的列表保存到总列表中。

def getdata(baseurl):
    datalist = []
    for i in range(0, 10):
        url = baseurl + str(i * 25)  
        html = geturl(url)
        soup = BeautifulSoup(html, "html.parser")  
        for item in soup.find_all("div", class_='item'):  
            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):
                onetitle = titles[0]
                data.append(onetitle)
                twotitle = titles[1].replace("/", "") 
                data.append(twotitle)
            else:
                data.append(titles)
                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 = inq[0].replace("。", "")
                data.append(inq)
            else:
                data.append(" ")

            bd = re.findall(findBd, item)[0]
            bd = re.sub('<br(\s+)?/>(\s+)?', " ", bd)
            bd = re.sub('/', " ", bd)
            data.append(bd.strip()) 
            datalist.append(data)
    return datalist

将获取到的数据保存到excel文件中,包括以下步骤:
1. 创建一个excel文件;
2. 在文件中创建一个工作表;
3. 写入execl项目栏,即第一行的标题;
4. 循环保存每一部电影的信息。

def savedata(datalist, savepath):
    workbook = xlwt.Workbook(encoding="utf-8", style_compression=0)  ##style_compression=0不压缩
    worksheet = workbook.add_sheet("豆瓣电影top250", cell_overwrite_ok=True)  # cell_overwrite_ok=True再次写入数据覆盖
    column = ("电影详情链接", "图片链接", "影片中文名", "影片外国名", "评分", "评价数", "概况", "相关信息")  ##execl项目栏
    for i in range(0, 8):
        worksheet.write(0, i, column[i])  # 将column[i]的内容保存在第0行,第i列
    for i in range(0, 250):
        data = datalist[i]
        for j in range(0, 8):
            worksheet.write(i + 1, j, data[j])
    workbook.save(savepath)

        使用`urllib`获取网页数据的函数。

def geturl(url):
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
        "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
    }
    req = urllib.request.Request(url, headers=head)
    try:  ##异常检测
        response = urllib.request.urlopen(req)
        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

        程序入口,执行主函数,并打印成功信息。 

if __name__ == '__main__':
    main()
    print("爬取成功!!!")

六、效果展示

【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

        【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

七、文末送书

        【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】,爬虫案例100,python,人工智能,开发语言

参与活动

1️⃣参与方式:关注、点赞、收藏,评论(人生苦短,我一天我也懒得卷)
2️⃣获奖方式:程序随机抽取 3位,每位小伙伴将获得一本书
3️⃣活动时间:截止到 2024-1-10 22:00:00

注:活动结束后会在我的主页动态如期公布中奖者,包邮到家。

购买链接https://product.dangdang.com/29643392.html

        这本书是美国人工智能领域的权威经典教材,受到广大师生的广泛好评。中文版更是被近百所高校采用,作为专业教科书使用

        本书第 2 版出版于 2018 年,恰恰在过去的5年中,人工智能技术有了突破性的进展,大模型即是其中的代表。第3版在第 2 版的基础上进行了内容调整和升级,以跟上技术发展的步伐。新增了深度学习、人工智能安全和人工智能编程等新进展、新成果。

        全书内容包括人工智能的历史、思维和智能之辩、图灵测试、搜索、博弈、知识表示、产生式系统、专家系统、机器学习、深度学习、自然语言处理(NLP)、自动规划、遗传算法、模糊控制、安全等。此外,它还介绍了一些新技术和应用,如机器人、高级计算机博弈等。文章来源地址https://www.toymoban.com/news/detail-777739.html

        这本书是美国人工智能领域的权威经典教材,受到广大师生的广泛好评。中文版更是被近百所高校采用,作为专业教科书使用

        本书第 2 版出版于 2018 年,恰恰在过去的5年中,人工智能技术有了突破性的进展,大模型即是其中的代表。第3版在第 2 版的基础上进行了内容调整和升级,以跟上技术发展的步伐。新增了深度学习、人工智能安全和人工智能编程等新进展、新成果。

        全书内容包括人工智能的历史、思维和智能之辩、图灵测试、搜索、博弈、知识表示、产生式系统、专家系统、机器学习、深度学习、自然语言处理(NLP)、自动规划、遗传算法、模糊控制、安全等。此外,它还介绍了一些新技术和应用,如机器人、高级计算机博弈等。

到了这里,关于【python】爬取豆瓣电影排行榜Top250存储到Excel文件中【附源码】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬取豆瓣电影Top 250,豆瓣电影评分可视化,豆瓣电影评分预测系统

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月21日
    浏览(76)
  • python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)

    目录 1.算法原理: 2.程序流程: 3.程序代码: 4.运行结果(部分结果展示): 5.结果分析: (1)利用import命令导入模块或者导入模块中的对象; ①利用requests库获取数据; ②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理; ③用time库进行时间延时

    2023年04月16日
    浏览(67)
  • python爬虫小练习——爬取豆瓣电影top250

    将爬取的数据导入到表格中,方便人为查看。 三大功能 1,下载所有网页内容。 2,处理网页中的内容提取自己想要的数据 3,导入到表格中 https://www.bilibili.com/video/BV1CY411f7yh/?p=15

    2024年01月17日
    浏览(48)
  • python爬虫——爬取豆瓣top250电影数据(适合初学者)

    爬取豆瓣top250其实是初学者用于练习和熟悉爬虫技能知识的简单实战项目,通过这个项目,可以让小白对爬虫有一个初步认识,因此,如果你已经接触过爬虫有些时间了,可以跳过该项目,选择更有挑战性的实战项目来提升技能。当然,如果你是小白,这个项目就再适合不过

    2024年02月07日
    浏览(82)
  • Python网页爬虫爬取豆瓣Top250电影数据——Xpath数据解析

    1.1 查看原页面信息 首先打开豆瓣Top250电影页面,其网址是:https://movie.douban.com/top250。 可以发现,该页面展示的电影信息有中英文电影名、导演、主演、上映年份、国籍、电影类型、评分等。 下滑到页面底部,发现第一页有25部电影的数据,并且可以点击页码数实现页面跳转

    2024年02月05日
    浏览(53)
  • [Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

    在终端中输入以下代码(直接在cmd命令提示符中,不需要打开Python) 从豆瓣网提供的镜像网站下载requests第三方库 是从国外网站下载,速度慢甚至有时候无法下载 运行代码之后,没反应,无输出结果 可以看一下返回的页面请求状态码是多少: 状态码是 418 ,所有4开头的状态

    2024年01月17日
    浏览(48)
  • 爬虫项目实战:利用基于selenium框架的爬虫模板爬取豆瓣电影Top250

    👋 Hi, I’m @货又星 👀 I’m interested in … 🌱 I’m currently learning … 💞 I’m looking to collaborate on … 📫 How to reach me … README 目录(持续更新中) 各种错误处理、爬虫实战及模板、百度智能云人脸识别、计算机视觉深度学习CNN图像识别与分类、PaddlePaddle自然语言处理知识图谱、

    2024年02月04日
    浏览(49)
  • 爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】

    在本篇博客中,我们将使用 Python 的 Selenium 和 BeautifulSoup 库来实现一个简单的网页爬虫,目的是爬取豆瓣电影TOP250的数据,并将结果保存到Excel文件中。 Selenium 是一个自动化测试工具,可以模拟用户在浏览器中的交互操作。我们将使用 Selenium 来打开网页、获取网页源码。 B

    2024年02月12日
    浏览(54)
  • 贵金属实时行情看盘软件排行榜(top 10)

    贵金属实时行情看盘软件哪个好,还是得看MT4软件,MT4是俄罗斯软件公司MetaQuotes生产的一款以外汇和贵金属交易为主的软件,其功能十分全面,目前全球有超过100家贵金属公司和30个国家的银行选择MT4软件作为网络交易平台。MT4综合行情图表、技术分析、下单交易四大功能于

    2024年02月03日
    浏览(45)
  • Python爬虫实战-批量爬取豆瓣电影排行信息

    大家好,我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取豆瓣电影排行信息,主要是巩固下Python爬虫基础 视频版教程: Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程_哔哩哔哩_bilibili Python爬虫实战-批量爬取豆瓣电影排行信息 视频教程作者:小锋老师

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包