IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 喜欢看电影?教你用python获取某光网上的电影数据 -> 正文阅读

[Python知识库]喜欢看电影?教你用python获取某光网上的电影数据

前言

嗨嗨,大家好 ~ 我是小圆 ~

中秋节已经过去啦,大家有没有吃月饼啊

请添加图片描述

中秋也上映了几部电影吧,我没去看,我都是直接在家躺了三天 ,舒服极了 😁
最近小编看的电影都比较少,但是之前那部《人生大事》我觉得挺不错的嘿嘿,还有《神探大战》…

优秀的电影作品能带给我们很多的知识,所以有更多的人越来越喜欢看电影。不知道你们有没有什么推荐的好电影,《绿皮书》也很不错哦!

今天来给你们分享一个各方面素材都比较全面的网站 - 时某网 本次的项目就是要从该网站上获取到指定年份的所有电影数据,并导出成excel表格以供参考。

请添加图片描述

准备

1.安装库

requests:网络数据请求并获取,安装方式:pip install requests
threading:多线程处理(数据量比较大),Python自带库,无需安装。
json:数据处理,Python自带库,无需安装。
pandas:将数据导出成excel表格,安装方式:pip install pandas

安装教程

有不会安装的可以私信我哦,或者直接来这里找管理小姐姐教你 ~ https://jq.qq.com/?_wv=1027&k=9IR7UvJw

2. 原理介绍

  1. 先通过requests库,通过时光网自带的电影数据API接口,获取到指定的电影数据。
  2. 将获取到的数据经过简单的加工,通过pandas库存入到excel表格中。

请添加图片描述

完整代码

(有些地方因平台原因不能写完整)

对文章有不理解的地方,或者自己有python相关没搞懂的问题,遇到难题,可以来这里哦 ~ https://jq.qq.com/?_wv=1027&k=9IR7UvJw

# Encoding: utf-8
# Author: furongbing
# Date: 2021-11-19 20:54
# Project name: FrbPythonFiles
# IDE: PyCharm
# File name: Mtime
import requests
import pandas as pd
from threading import Thread
import time
import json

# 模块说明:
"""
从某某网上按年代获取指定年份电影的数据
"""
# 更新日志:
"""
1、2021-11-19:
    a、完成初版
"""
# 待修改:
"""
"""
# 请求头数据
headers = {"Accept": "application/json, text/plain, */*",
           "Accept-Encoding": "gzip, deflate",
           'Accept-Language': 'zh-CN,zh;q=0.9',
           'Connection': 'keep-alive',
           'Content-Type': 'application/x-www-form-urlencoded',
           'Cookie': '_tt_=FB8A3FAD4704D42543B7EC121C2565AA; __utma=196937584.1082595229.1637326918.1637326918.1637326918.1; __utmz=196937584.1637326918.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_07aa95427da600fc217b1133c1e84e5b=1637241042,1637326637,1637374129; Hm_lpvt_07aa95427da600fc217b1133c1e84e5b=1637374170',
           'Host': 'front-gateway.mtime.com',
           'Origin': 'http://film.mtime.com',
           'Referer': 'http://film.mtime.com/',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
           }
pagesize = 20  # todo 获取的每页数据条数,一般建议成默认的20就可以了,设置的太大,每页包含的数据量就大,某一条电影数据出错会导致其它数据也被抛弃。
data = []
error = []


def get_data(p_year=1987):  # 按照年份获取当年度所有的电影数据
    url = 'http://com/mtime-search/search/unionSearch2'  # 请求的url
    params = {'year': p_year, 'pageSize': pagesize, 'pageIndex': 1, 'searchType': 0}  # 请求的表单数据
    # 获取当年度所有的电影的数量,继而计算要获取多少页
    try:
        r = requests.get(url=url, params=params, headers=headers, timeout=10)
        r.encoding = r.apparent_encoding
        all_data = json.loads(r.text)
        moviesCount = all_data['data']['moviesCount']
        pages = round(moviesCount / pagesize)
    except Exception:
        moviesCount = 1000
        pages = round(moviesCount / pagesize)

    # 定义变量
    来源 = '时光网'
    年代 = p_year
    ID, 中文名, 英文名, 类型, 形式, 海报url, 评分, 导演, 主演, 详情, 可播放, 国家地区, 上映日期, 片长, 票房, 观看日期 = [''] * 16

    for page in range(pages):  # todo 一共要获取多少页
        if page % 10 == 0:  # 每10页输出一次进度
            print(f'已完成 {100 * page / pages:.2f}%')
        pageindex = page + 1
        params = {'year': p_year, 'pageSize': pagesize, 'pageIndex': pageindex, 'searchType': 0}  # 请求的表单数据
        try:  # 获取指定页的电影数据
            r = requests.get(url=url, params=params, headers=headers, timeout=10)
            r.encoding = r.apparent_encoding
            all_data = json.loads(r.text)
            movies = all_data['data']['movies']
            # 获取电影具体信息
            for movie in movies:
                ID = movie['movieId']
                中文名 = movie['name']
                英文名 = movie['nameEn']
                类型 = movie['movieType']
                形式 = movie['movieContentType']
                海报url = movie['img']
                其它译名 = movie['titleOthersCn']
                评分 = movie['rating']
                导演 = movie['directors']
                主演 = movie['actors']
                详情 = movie['href']
                可播放 = movie['canPlay']
                国家地区 = movie['locationName']
                上映日期 = movie['realTime']
                片长 = movie['length']
                info = [来源, 年代, ID, 中文名, 英文名, 类型, 形式, 海报url, 其它译名, 评分, 导演, 主演, 详情, 可播放, 国家地区, 上映日期, 片长, 票房, 观看日期]
                data.append(info)
        except Exception as err:
            er_year, er_pagesize, er_pageindex, er_msg = p_year, pagesize, pageindex, err
            error.append([er_year, er_pagesize, er_pageindex, er_msg])
            print(f"出错啦,出错年份:{p_year},pagesize:{pagesize},page:{pageindex},出错原因:{er_msg}")
            continue


if __name__ == '__main__':
    begin = time.perf_counter()
    threads = []
    for year in range(2020, 2021):  # todo 此处可以自定义要获取的年份
        t = Thread(target=get_data, args=(year,))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()

    with open('error.txt', 'w', encoding='utf-8') as f:
        f.write(str(error))

    data.insert(0, ['来源', '年代', 'ID', '中文名', '英文名', '类型', '形式', '海报url', '其它译名', '评分', '导演', '主演', '详情', '可播放', '国家地区', '上映日期', '片长', '票房', '观看日期'])
    df = pd.DataFrame(data)
    df.to_excel(excel_writer=r'film.xlsx', sheet_name='sheet1', index=None, header=False)  # todo film.xlsx为最后保存的文件名

    end = time.perf_counter()
    runtime = end - begin
    print(f'运行时长:{runtime:.3f}秒。') 

输出结果

已完成 0.00%
已完成 11.63%
已完成 23.26%
已完成 34.88%
已完成 46.51%
已完成 58.14%
已完成 69.77%
已完成 81.40%
已完成 93.02%
运行时长:27.906秒。

虽然示例中获取的是2020年的数据,但是由于代码中采用的是多线程,所以如果是获取一段时间的数据时耗费的时间也和这个差不多。
最后保存到excel中的数据如下:

在这里插入图片描述

好啦,今天的分享到这里就结束了 ~
对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

请添加图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:58:19  更:2022-09-15 02:00:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 14:30:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计