小支同学的影刀高级考试操作题+源码分享

前言

       在数据驱动的时代,掌握数据抓取、处理和存储的能力变得至关重要。本文小支同学将带领大家完成两个关键任务:一是从中国历史票房红榜中抓取电影数据,并将其存储到MySQL数据库中;二是从API接口获取电影数据,进行统计分析后,将结果写入数据库。通过这两个任务,我们将深入了解数据处理的全流程,从数据获取到清洗,再到最终的存储和分析。无论您是数据分析师、开发人员,还是对数据处理感兴趣的初学者,本文都将为您提供宝贵的知识和实践经验。让我们一起开始这段数据处理的旅程吧!

题目一:获取电影数据并写入数据库

1. 题目具体分析

目标:从中国历史票房红榜抓取数据,存入指定MySQL数据库。

数据库信息:IP 43.143.30.32,端口 3306,用户名 yingdao,密码 9527,库名 ydtest,表名 movie

测试结果:

       首先我们来到题目中所说的网址进行分析,发现我圈起来的红色框内的数据是我们需要获取的,但是观察到网页中的数据与我们最后需要的数据有点出入,因此我们需要对数据进行相关的处理。那么我们就需要开始请求获取数据。 

快捷使用

题目一:获取电影数据并写入数据库

1.1 安装三个需要的库

pymysql
lxml
requests

1.2 模块代码

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块
# author - 夜时雨
# time - 2025-3-19
# csdn - https://blog.csdn.net/qq_48902216
 
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
 
# 本模块所需要的包
import re
import requests
from lxml import etree
import pymysql
 
# 缩写字母国家字典(🇨🇳_中国)
country_dict = {
    '🇨🇳': '中国',
    '🇺🇸': '美国',
    '🇯🇵': '日本',
    '🇭🇰': '香港',
    '🇹🇼': '台湾',
    '🇰🇷': '韩国',
    '🇩🇪': '德国',
    '🇫🇷': '法国',
    '🇮🇹': '意大利',
    '🇪🇸': '西班牙',
    '🇷🇺': '俄罗斯',
    "🇮🇳": '印度',
    "🇬🇧": '英国',
    "🇫🇮": '芬兰',
    "🇱🇧": '黎巴嫩共和国',
    "🇦🇺": '澳大利亚',
}
 
 
# 获取电影数据
def get_movie():
    url = 'http://www.boxofficecn.com/the-red-box-office'
    res = requests.get(url)
    res_text = etree.HTML(res.text)
    tr_list = res_text.xpath('//*[@id="tablepress-4"]/tbody/tr')
    result = []
    for tr in tr_list:
        movie_time_and_country = tr.xpath('./td[1]/text()')[0]
 
        try:
            movie_time, movie_country_words = movie_time_and_country.split(' ')
        except Exception as e:
            print(e)
            # 正则识别年份与国家例如:2023🇨🇳,将年份2023与关键字段🇨🇳分别识别出来
            movie_time = re.findall(r'\d+', movie_time_and_country)[0]
            movie_country_words = movie_time_and_country.split(movie_time)[1]
            print(movie_time, movie_country_words)
        movie_country = country_dict[movie_country_words.strip()]
        movie_name_and_score = tr.xpath('./td[2]/text()')[0]
        movie_name = movie_name_and_score.split('(')[0]
        movie_score = movie_name_and_score.split('(')[1].split(')')[0]
        movie_actors = tr.xpath('./td[3]/text()')[0]
        movie_money_list = tr.xpath('./td[last()]/font/text()') or tr.xpath('./td[last()]/text()') or []
        if len(movie_money_list) == 0:
            movie_money = 0
        else:
            try:
                movie_money = int(movie_money_list[0])
            except:
                movie_money = int(movie_money_list[0][0:-1])
        # 将数据整合成json格式
        movie_dict = {
            'movie_time': movie_time,
            'movie_name': movie_name,
            'movie_score': movie_score,
            'movie_country': movie_country,
            'movie_actors': movie_actors,
            'movie_money': movie_money,
        }
        result.append(movie_dict)
    return result
 
# 最终数据
def perfect_data(movie_data, submitter):
    mysql_insert_data = []
    for movie in movie_data:
        movies_tuple = (
            movie["movie_name"],
            movie["movie_time"],
            movie["mov
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stitch .

欢迎各位家人来白嫖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值