【详细步骤解析】爬虫小练习——爬取豆瓣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)
相关文章
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1670 29
|
数据采集 Web App开发 监控
深度解析:使用ChromeDriver和webdriver_manager实现无头浏览器爬虫
在现代网络爬虫实践中,动态网页加载和反爬虫机制增加了数据采集的难度。采用无头浏览器技术(如Selenium与ChromeDriver)可有效模拟用户行为、执行JavaScript,获取动态内容。通过设置代理IP、伪装User-Agent和处理Cookies,提升爬虫隐蔽性和稳定性。该方案适用于电商价格监控、社交媒体数据采集和招聘信息抓取等场景,实现更高效的数据获取。
1245 2
深度解析:使用ChromeDriver和webdriver_manager实现无头浏览器爬虫
|
数据采集 机器学习/深度学习 数据挖掘
Python爬虫生成CSV文件的完整流程
Python爬虫生成CSV文件的完整流程
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
703 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。

推荐镜像

更多
  • DNS