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

简介: 【详细步骤解析】爬虫小练习——爬取豆瓣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)
AI 代码解读
相关文章
React 步骤条组件 Stepper 深入解析与常见问题
步骤条组件是构建多步骤表单或流程时的有力工具,帮助用户了解进度并导航。本文介绍了在React中实现简单步骤条的方法,包括基本结构、状态管理、样式处理及常见问题解决策略,如状态管理库的使用、自定义Hook的提取和CSS Modules的应用,以确保组件的健壮性和可维护性。
201 17
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
303 3
2025通配符证书免费申请步骤解析
打造安全、高效的网站加密环境,从免费通配符SSL证书开始!今年我们特别推出免费通配符SSL证书申请活动,覆盖主域名及所有子域名。只需一次申请,即可保护无限子域名,节省时间和资源。全程0成本,自动化流程快速配置,权威CA机构签发,兼容主流浏览器与平台。非技术人员也能轻松操作,提升网站安全性与用户信任度。立即访问JoySSL官网注册并申请,享受顶级加密服务!
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
357 0
做个爬虫吧:豆瓣《八佰》影评
做个爬虫吧:豆瓣《八佰》影评
97 0
|
11月前
|
项目管理流程全解析及关键步骤介绍
项目管理流程是项目成功的基石,涵盖启动、规划、执行、监控和收尾等阶段。Zoho Projects 等软件可提高效率,支持结构化启动与规划、高效执行与协作及实时监控。这些流程和工具对项目的全局视角、团队协作和风险控制至关重要。项目管理软件适用于不同规模企业,实施时间因软件复杂度和企业准备而异。
224 2
让模型评估模型:构建双代理RAG评估系统的步骤解析
在当前大语言模型(LLM)应用开发中,评估模型输出的准确性成为关键问题。本文介绍了一个基于双代理的RAG(检索增强生成)评估系统,使用生成代理和反馈代理对输出进行评估。文中详细描述了系统的构建过程,并展示了基于四种提示工程技术(ReAct、思维链、自一致性和角色提示)的不同结果。实验结果显示,ReAct和思维链技术表现相似,自一致性技术则呈现相反结果,角色提示技术最为不稳定。研究强调了多角度评估的重要性,并提供了系统实现的详细代码。
161 10
让模型评估模型:构建双代理RAG评估系统的步骤解析
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
1031 1

推荐镜像

更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等