首页 > 编程语言 >使用 Python 爬取豆瓣电影 Top250 多页数据

使用 Python 爬取豆瓣电影 Top250 多页数据

时间:2024-08-11 14:06:45浏览次数:5  
标签:25 name start Python 爬取 movies num Top250 class

使用 Python 爬取豆瓣电影 Top250 多页数据

创建时间:2024-08-11

一、完整代码

'''
抓取单贞数据 中的评分 简介 评价人数
将上面的改为多页
https://movie.douban.com/top250?start=0
'''
import requests
from lxml import etree

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}
url = 'https://movie.douban.com/top250?start=0'

pag_num = int(input('请输入需要抓取的页数,一页25条数据,共10页:')) * 25 - 25
if pag_num <= 0:
    print('输入错误!!')
    exit(-1)
for num in range(0, pag_num + 25, 25):
    url = f'https://movie.douban.com/top250?start={num}'
    # print(url)

    res = requests.get(url, headers=header)
    # print(res.status_code)
    res.encoding = res.apparent_encoding
    tree = etree.HTML(res.text)
    movies_name = tree.xpath('//ol[@class="grid_view"]//img/@alt')
    movies_start = tree.xpath('//ol[@class="grid_view"]//span[@class="rating_num"]/text()')
    movies_intro = tree.xpath('//ol[@class="grid_view"]//span[@class="inq"]//text()')
    movies_evaluators = tree.xpath('//ol[@class="grid_view"]//div[@class="star"]/span[4]/text()')

    for name, start, intro, evaluator in zip(movies_name, movies_start, movies_intro, movies_evaluators):
        movie = name + ',' + start + ',' + intro + ',' + evaluator + '\n'
        print(f'{name}-----下载成功~~~~')
        with open('top250.txt', 'a+', encoding='utf-8') as file:
            file.write(movie)

1.1 效果

二、代码解析

2.1 设置了请求的头部信息

模拟正常的浏览器访问,以避免被网站识别为爬虫并阻止访问。

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}

2.2 参数设置

根据输入,通过循环构建不同的 URL 来访问不同的页面。

pag_num = int(input('请输入需要抓取的页数,一页 25 条数据,共 10 页:')) * 25 - 25
if pag_num <= 0:
    print('输入错误!!')
    exit(-1)
for num in range(0, pag_num + 25, 25):
    url = f'https://movie.douban.com/top250?start={num}'

2.3 解析数据

在获取到每个页面的 HTML 内容后,使用 lxml 的 etree 模块解析页面,并通过 xpath 表达式提取出电影的名称、评分、简介和评价人数等信息。

res = requests.get(url, headers=header)
res.encoding = res.apparent_encoding
tree = etree.HTML(res.text)
movies_name = tree.xpath('//ol[@class="grid_view"]//img/@alt')
movies_start = tree.xpath('//ol[@class="grid_view"]//span[@class="rating_num"]/text()')
movies_intro = tree.xpath('//ol[@class="grid_view"]//span[@class="inq"]//text()')
movies_evaluators = tree.xpath('//ol[@class="grid_view"]//div[@class="star"]/span[4]/text()')

2.4 合并保存

将提取到的每部电影的信息组合成一条记录,并保存到一个名为 top250.txt 的文件中。

for name, start, intro, evaluator in zip(movies_name, movies_start, movies_intro, movies_evaluators):
    movie = name + ',' + start + ',' + intro + ',' + evaluator + '\n'
    print(f'{name}-----下载成功~~~~')
    with open('top250.txt', 'a+', encoding='utf-8') as file:
        file.write(movie)

标签:25,name,start,Python,爬取,movies,num,Top250,class
From: https://www.cnblogs.com/suifeng2000/p/18353320

相关文章

  • python代码实现老鹰抓小鸡游戏
    importpygameimportrandom#初始化pygamepygame.init()#设置屏幕尺寸和颜色WIDTH,HEIGHT=800,600BACKGROUND_COLOR=(255,255,255)EAGLE_COLOR=(0,0,255)CHICK_COLOR=(255,255,0)FPS=30#创建游戏窗口screen=pygame.display.set_mode((WIDTH,......
  • python代码实现挑棍游戏
    importrandomdefprint_sticks(sticks):  """打印当前的棍子状态"""  print("当前棍子状态:",''.join(str(i)foriinrange(1,sticks+1)))defplayer_turn(sticks):  """处理玩家的回合"""  ......
  • 【Python蓝屏程序(管理员)】
    说明:该程序为临摹(......
  • BUUCTF 81题吹着贝斯的二维码详解(包含各类工具和python脚本)
    在网上看了很多类似解题步骤和说明,感觉对小白都不友好,于是决定搜集整理下,做个详尽的解题步骤:压缩包解压得到36个无后缀名文件和一个flag.zip压缩包再看压缩包,解压发现有压缩密码,用winhex查看是不是伪加密,在末尾发现一串可疑字符串,拷贝下来留用:GNATOMJVIQZUKNJXGRCTGNRTG......
  • python asyncio grpc
    1.准备环境python3.11-mvenvvenvsourcevenv/*/activatepipinstallgrpcio-tools#包含了grpcio和protobufpipinstalltypes-protobufgrpc-stubs#可选安装,用于mypy静态检查2.编写msg.protosyntax="proto3";//这是注释,同时也是类文档serviceMsgService{......
  • Python和多线程(multi-threading)
    在Python中,实现并行处理的方法有几种,但由于Python的全局解释器锁(GIL,GlobalInterpreterLock)的存在,传统意义上的多线程(使用threading模块)并不总能有效利用多核CPU来实现真正的并行计算。GIL确保任何时候只有一个线程在执行Python字节码。不过,仍然有几种方法可以绕过这个限制,......
  • Python基础知识:奠定坚实的编程基础
    Python,作为一种备受欢迎的高级编程语言,凭借其简洁的语法、强大的标准库和丰富的第三方模块,赢得了广泛的赞誉和应用。无论你是编程新手还是资深开发者,Python都能提供丰富的学习机会和实际应用场景。本文旨在深入探讨Python的基础知识,涵盖字面量、变量、数据类型、注释、类型......
  • python图片压缩大小及设置图片像素大小120乘160
    python图片压缩大小及设置图片像素大小120乘1601.在pycharm中安装pillow库的步骤:打开设置并转到“项目”页面。选择“python解释器”并单击“+”按钮。搜索“pillow”,选中包并单击“安装包”。1.打开PyCharm设置Windows:File>Settings2.转到“项目”页面在左侧导航栏中,单......
  • Python之赋值语句(多重赋值和交换赋值)
    这是《Python入门经典以解决计算问题为导向的Python编程实践》73-74页关于赋值的内容。讲了Python中几种赋值方式。赋值语句1、最简单的赋值:a=b2、多重赋值:a,b,c=1,2,33、交换:a,b=b,a1、最简单的赋值:a=bb可以是数字、字符串,也可以是一个表达式。a必须是一个对象,不......
  • Python使用PyCharm创建一个简单的Qt Quick应用程序-hello_world_quick.py(读取qml文件
    """CreateaSimpleQuickApplication"""importsysfrompathlibimportPathfromPySide6.QtGuiimportQGuiApplicationfromPySide6.QtQmlimportQQmlApplicationEngine#打开文件,读取文件,并返回文件内容defread_file(file_path):"......