爬取豆瓣TOP250电影排行榜

本文介绍正则表达式的概念及应用场景,并通过实例演示如何利用正则表达式从网页中抓取特定信息,包括电影名称、上映年份及评分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式的概念
使用单个字符串来描述一系列符合某个句法规则的字符串
是对字符串操作的一种逻辑公式
应用场景:处理文本和数据
正则表达式过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;否则就匹配失败。

参数:pattern:正则模型、string:要匹配的字符串
flags:匹配模式/标示位 如:是否区分大小写、多行匹配等
span() #匹配字符串的开始和结束位置的索引位置
group() #获取内容
re.match() #从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None。
re.search() #函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果没有字符串匹配返回None
re.findall() #以列表的形式返回匹配的字符串
re.sub() #替换
re.split() #split能够按照所能匹配的字符串,将字符串进行切分,返回切分后的字符串列表

在这里插入图片描述

import re
import requests
# 循环从0到250,每次循环25
for i in range(0, 250, 25):
    url = "https://movie.douban.com/top250?start=" + str(i) + "&filter="
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/91.0.4472.114 '
                      'Safari/537.36 Edg/91.0.864.54 '
    }

    response = requests.get(url=url, headers=headers)
    # 获取页面数据
    page_text = response.text
    # 编写正则OBJ
    # 获得name值  regular_obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)</span>', re.S)
    # 获取年份值   .*?<p class="">.*?<br>(?P<year>.*?)&nbsp
    # 获取评价人数  .*?<span>(?P<score>.*?)</span>
    regular_obj = re.compile(
        r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)</span>.*?<p class="">.*?<br>'
        r'(?P<year>.*?)&nbsp.*?<span>(?P<score>.*?)</span>', re.S)
    obj = regular_obj.finditer(page_text)

# 因为返回的是一个迭代器对象所以遍历一下
    for it in obj:
        print(it.group("name"))
        print(it.group("year").split())
        print(it.group("score"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值