python爬虫top250电影数据

news/2024/7/19 10:28:55 标签: python, 爬虫, 开发语言

之前看到的,我改了一下,多了很多东西
在这里插入图片描述

import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from openpyxl.styles import Font
import re

def extract_movie_info(info):
    # 使用正则表达式提取信息
    pattern = re.compile(r'导演: (.*?)\s*主演: (.*?)\s*(\d{4})\s*/\s*(.*?)\s*/\s*(.*)')
    match = pattern.match(info)
    
    if match:
        director = match.group(1).strip()
        actors = match.group(2).strip()
        year = match.group(3).strip()
        country = match.group(4).strip()
        genre = match.group(5).strip()
        return director, actors, year, country, genre
    else:
        return None

def douban_top250():
    url = 'https://movie.douban.com/top250'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.79'}

    movies = []

    for start_num in range(0, 250, 25):
        page_url = f'{url}?start={start_num}'
        response = requests.get(page_url, headers=headers)
        soup = BeautifulSoup(response.text, 'html.parser')

        for movie in soup.select('.item'):
            title = movie.select_one('.title').text.strip()
            rating = movie.select_one('.rating_num').text.strip()
            
            # 获取导演、主演和其他信息
            info = movie.select_one('p').text.strip()
            movie_info = extract_movie_info(info)
            
            if movie_info:
                director, actors, year, country, genre = movie_info
                movies.append((title, rating, director, actors, year, country, genre))

    return movies

def create_excel(movies):
    wb = Workbook()
    ws = wb.active

    title_font = Font(color='FF0000', bold=True)
    ws.append(['电影名称', '评分', '导演', '主演', '年份', '国家', '类型'])

    for cell in ws[1]:
        cell.font = title_font

    for movie in movies:
        ws.append(movie)

    wb.save('豆瓣_top250.xlsx')

if __name__ == '__main__':
    movies = douban_top250()
    create_excel(movies)
    print('Excel文件已生成。')

http://www.niftyadmin.cn/n/5177815.html

相关文章

【Shell脚本10】Shell 流程控制

Shell 流程控制 和 Java、PHP 等语言不一样&#xff0c;sh 的流程控制不可为空&#xff0c;如(以下为 PHP 流程控制写法)&#xff1a; <?php if (isset($_GET["q"])) {search(q); } else {// 不做任何事情 }在 sh/bash 里可不能这么写&#xff0c;如果 else 分…

Android 11.0 系统sim卡5G 信号格数对应的信号强度值修改

1.前言 在11.0的系统产品开发中,在手机通讯这块功能也是特别重要的,在手机插入手机sim卡后,会根据当前的sim卡信号来显示对应的 sim卡信号显示格数,所以为了增强相关的信号格数,就需要修改sim卡对应的信号强度值来实现相关的功能 2.系统sim卡5G 信号格数对应的信号强度…

Vatee万腾科技决策力的引领创新:Vatee数字化视野的崭新天地

在数字时代的激烈竞争中&#xff0c;Vatee万腾以其科技决策力的引领&#xff0c;开创了数字化视野的崭新天地。这并不仅仅是一场技术的飞跃&#xff0c;更是一次对未来的深刻洞察和引领创新的勇敢实践。 Vatee万腾的科技决策力不仅仅停留在数据分析和算法的运用&#xff0c;更是…

文件上传 [SUCTF 2019]CheckIn1

打开题目 我们用cmd curl --head url 查看网站使用的是什么服务器 此题用的是openresty&#xff0c;OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台 我们上传php&#xff0c;phtml的一句话木马都显示不合法 那我们试试传a.jpg的一句话木马 显示我们一句话木马内容里面…

机器视觉系统的组成

图像获取 光学系统采集图像&#xff0c;图像转换成模拟格式并传入计算机存储器。 图像处理和分析 处理器运用不同的算法来提高对结论有重要影响的图像要素并形成数据作为判决依据。 判决和输出 处理器的控制程序根据收到的数据做出结论并输出信息作反馈控制等应用。

路由器的结构以及工作原理

目录 路由器的结构 交换结构三种常用的交换方式 1.通过存储器 2.通过总线 3.通过纵横交换结构&#xff08;crossbar switch fabric&#xff09; 路由器的结构 路由器结构可划分为两大部分&#xff1a;路由选择部分&#xff0c;分组转发部分 路由选择部分也叫做控制部分&…

大数据系统建模方法论简谈

1.根据业务需求构建总线矩阵--明确需求 构建总线矩阵的目的&#xff1a;总线矩阵也是BI核心之一&#xff0c;基本上只要详细了解企业业务战略线就能得出总线矩阵&#xff0c;它对应着企业每一个业务单元&#xff0c;提取业务单元中的一致性维度和事实量值组 组合成企业总线矩阵…

AISchedule(3):基础生成表格

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>事件列表</title><!-- 加载样式表 --><style>/* 基础样式 */body {background: linear-gradient(to bottom, #f2f2f2, #e0e0e0);font-family: Helvetica…