【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码

豆瓣top250

主要步骤

1.发送请求,根据url地址,然后送请求
2.获取数据,获取服务器返回的响应的内容
3.解析数据:提取想要爬取的内容
4.保存数据:将得到的数据保存为文档

具体实施

#豆瓣top250
import csv                          #引入csv模块
import requests                     #引入请求模块
import time                         #引入时间模块
import parsel                      #导入数据解析模块

#打开一个csv文件并进行操作,将来数据要存储在csv文件中

f=open('豆瓣Top250'+'.csv',mode='a',encoding='utf-8-sig',newline='') #newline,每行写入的时候都不会产生一个空行

#加表头,表的第一列
writer=csv.DictWriter(f,fieldnames=[    
        '电影名' ,
        '导演演员' ,
        '种类',
        '评分' ,
        '评论人数' ,
        '简介',
    ])
writer.writeheader()  #将这些字段写入
number=1 #多页获取,页数

for page in range(0,250,25):
    print(f'正在爬取第{number}页数据')
    number=number+1
    time.sleep(1) #睡眠一秒

    #第一步:发送请求,确定url地址,然后对其发送请求

    #url='https://movie.douban.com/top250'                                                #想要爬取的地址
    url=f'https://movie.douban.com/top250?start={page}&filter='   

    #伪装成浏览器去访问,发送请求,User-Agent:浏览器的标识,基本信息
    headers={                                                                            #注意是键值对
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35'
    }                                                                                    

    #第二步:获取数据,获取服务器返回的响应的内容

    response=requests.get(url=url,headers=headers)                                       #传递相应的内容,获取服务器返回的响应数据内容

    #第三步:解析数据,提取想要的内容


    selector=parsel.Selector(response.text)                                              #解析css里面的选择器
    lis=selector.css('#content > div > div.article > ol > li')                           #获取所有的li标签

    #找到大的li标签,再通过for循环找出每个小的标签

    for li in lis:
        title_list=li.css('div > div.info > div.hd > a > span:nth-child(1)::text').getall()                  #获取电影名称,这里只获取中文名

        #这里用li而不用Selector是因为从li中获取,这是根据for后面的决定的

        move_info=li.css('div > div.info > div.bd > p:nth-child(1)::text').getall()                          #获取电影的详细信息
        move_comments=li.css('div > div.info > div.bd > div>span::text').getall()                                 #获取电影的评论
        move_simple=li.css('div > div.info > div.bd > p.quote > span::text').getall()                          #获取电影简介

        #getall返回的是列表,所以需要join新的分隔符,连接返回新的字符串
        title=''.join(title_list)
        actor=move_info[0]                                                                                   #导演,演员
        plot=move_info[1]                                                                                    #种类
        scope=move_comments[0]                                                                               #评分
        pnum=move_comments[1]                                                                                #评论人数
        intro=''.join(move_simple)                                                                           #电影简介


        #第四步:保存数据,将得到的数据保存为文档
        #装载数据

        dit={
            '电影名' : title,
            '导演演员' : actor,
            '种类': plot,
            '评分': scope,
            '评论人数': pnum,
            '简介': intro,
        }
        writer.writerow(dit)
相关文章
|
5天前
|
开发框架 供应链 监控
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
|
19天前
|
数据处理 开发者 Python
Python 高级编程:深入解析 CSV 文件读取
在Python中,读取CSV文件是数据处理的重要环节。本文介绍了两种高效方法:一是利用pandas库的`read_csv`函数,将CSV文件快速转换为DataFrame对象,便于数据操作;二是通过csv模块的`csv.reader`按行读取CSV内容。此外,还涉及了如何选取特定列、解析日期格式、跳过指定行以及分块读取大文件等高级技巧,帮助开发者更灵活地处理各种CSV文件。参考链接:<https://www.wodianping.com/app/2024-10/48782.html>。
68 6
|
1月前
|
机器学习/深度学习 存储 人工智能
让模型评估模型:构建双代理RAG评估系统的步骤解析
在当前大语言模型(LLM)应用开发中,评估模型输出的准确性成为关键问题。本文介绍了一个基于双代理的RAG(检索增强生成)评估系统,使用生成代理和反馈代理对输出进行评估。文中详细描述了系统的构建过程,并展示了基于四种提示工程技术(ReAct、思维链、自一致性和角色提示)的不同结果。实验结果显示,ReAct和思维链技术表现相似,自一致性技术则呈现相反结果,角色提示技术最为不稳定。研究强调了多角度评估的重要性,并提供了系统实现的详细代码。
51 10
让模型评估模型:构建双代理RAG评估系统的步骤解析
|
1月前
|
监控 数据挖掘 BI
项目管理流程全解析及关键步骤介绍
项目管理流程是项目成功的基石,涵盖启动、规划、执行、监控和收尾等阶段。Zoho Projects 等软件可提高效率,支持结构化启动与规划、高效执行与协作及实时监控。这些流程和工具对项目的全局视角、团队协作和风险控制至关重要。项目管理软件适用于不同规模企业,实施时间因软件复杂度和企业准备而异。
50 2
|
10天前
|
SQL 监控 测试技术
全面解析SQL数据库迁移:步骤、挑战与最佳实践a8u.0335pw.com
随着信息技术的快速发展,数据库迁移已成为企业和组织在IT领域经常面临的一项任务。数据库迁移涉及到数据的转移、转换和适应新环境的过程,特别是在使用SQL数据库时。本文将详细介绍SQL数据库迁移的过程,探讨其面临的挑战,并分享一些最佳实践。一、数据库迁移概述数据库迁移是指将数据库从一个环境迁移到另一个环
|
1月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
61 3
|
2月前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
183 0
|
2月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
169 0
|
2月前
|
数据采集 存储 数据库
Python中实现简单爬虫与数据解析
【8月更文挑战第31天】在数字化时代的浪潮中,数据成为了新的石油。本文将带领读者通过Python编程语言,从零开始构建一个简单的网络爬虫,并展示如何对爬取的数据进行解析和处理。我们将一起探索请求网站、解析HTML以及存储数据的基础知识,让每个人都能成为自己数据故事的讲述者。
|
2月前
|
数据采集 JavaScript 前端开发
Python 爬虫实战:抓取和解析网页数据
【8月更文挑战第31天】本文将引导你通过Python编写一个简单的网络爬虫,从网页中抓取并解析数据。我们将使用requests库获取网页内容,然后利用BeautifulSoup进行解析。通过本教程,你不仅能够学习到如何自动化地从网站收集信息,还能理解数据处理的基本概念。无论你是编程新手还是希望扩展你的技术工具箱,这篇文章都将为你提供有价值的见解。

推荐镜像

更多