亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python獲取時(shí)光網(wǎng)電影數(shù)據(jù)的實(shí)例代碼

 更新時(shí)間:2022年09月04日 11:02:18   作者:思必得_22  
這篇文章主要介紹了Python獲取時(shí)光網(wǎng)電影數(shù)據(jù),基本原理是先通過requests庫(kù),通過時(shí)光網(wǎng)自帶的電影數(shù)據(jù)API接口,獲取到指定的電影數(shù)據(jù),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、前言

有時(shí)候覺得電影真是人類有史以來(lái)最偉大的發(fā)明,我喜歡看電影,看電影可以讓我們?cè)鲩L(zhǎng)見聞,學(xué)習(xí)知識(shí)。從某種角度上而言,電影憑借自身獨(dú)有的魅力大大延長(zhǎng)了人類的”壽命”。
一部電影如同一本故事書,我可以沉迷到其中,來(lái)的一個(gè)新的世界,跟著電影主角去經(jīng)歷去感悟。而好的電影是需要慢慢品嘗的,不僅提供了各種視覺刺激和情感體驗(yàn),更能帶來(lái)思考點(diǎn),也讓我可以懂得在現(xiàn)實(shí)生活中窮盡一生也無(wú)法明白的道理。電影比書本更直接、更有趣、更精彩。
好的電影可以在潛移默化中塑造我們的三觀,在電影中我們可以獲得平靜、滿足和溫和,學(xué)會(huì)堅(jiān)強(qiáng)、勇氣和努力。電影延展了無(wú)聊單調(diào)、枯燥又稀松平常的生活,讓我可以在對(duì)現(xiàn)實(shí)生活厭倦或失望時(shí)至少有一個(gè)地方可以逃離。
正因?yàn)殡娪坝兄T多好處,并且比書本和說(shuō)教能更好的塑造三觀,因此,家長(zhǎng)們可以陪同小孩看電影,鼓勵(lì)孩子從電影中學(xué)會(huì)堅(jiān)強(qiáng)和勇敢等優(yōu)良品質(zhì)。
既然要看看電影,就要去看優(yōu)秀的作品,時(shí)光網(wǎng)是一個(gè)電影各方面素材都比較全面的網(wǎng)站,本次的項(xiàng)目就是要從該網(wǎng)站上獲取到指定年份的所有電影數(shù)據(jù),并導(dǎo)出成excel表格以供參考。
注意:請(qǐng)勿使用該技術(shù)獲取網(wǎng)絡(luò)上敏感、隱私、非公開等數(shù)據(jù)。
電影推薦(愛情類):
假如愛有天意:緣,妙不可言,或許一切早已注定。
靈魂擺渡·黃泉:為情甘愿赴死,為愛執(zhí)守千年。
你的名字:世上所有的相遇都是久別重逢。
電影推薦(親子類):
機(jī)器人總動(dòng)員:孩子看到的是友情,大人看到的是愛情。很有愛的一部動(dòng)畫片。
尋夢(mèng)環(huán)游記:死亡并不是終點(diǎn),被人忘卻才是真正的死亡
電影推薦(懸疑類):
小島驚魂
異次元駭客
恐怖游輪

二、準(zhǔn)備

2.1 安裝庫(kù)

requests:網(wǎng)絡(luò)數(shù)據(jù)請(qǐng)求并獲取,安裝方式:pip install requests
threading:多線程處理(數(shù)據(jù)量比較大),Python自帶庫(kù),無(wú)需安裝。
json:數(shù)據(jù)處理,Python自帶庫(kù),無(wú)需安裝。
pandas:將數(shù)據(jù)導(dǎo)出成excel表格,安裝方式:pip install pandas

2.2 原理介紹

1、先通過requests庫(kù),通過時(shí)光網(wǎng)自帶的電影數(shù)據(jù)API接口,獲取到指定的電影數(shù)據(jù)。
2、將獲取到的數(shù)據(jù)經(jīng)過簡(jiǎn)單的加工,通過pandas庫(kù)存入到excel表格中。

三、實(shí)例

3.1 完整代碼

# 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
 
# 模塊說(shuō)明:
"""
從時(shí)光網(wǎng)上按年代獲取指定年份電影的數(shù)據(jù)
"""
# 更新日志:
"""
1、2021-11-19:
    a、完成初版
"""
# 待修改:
"""
"""
# 請(qǐng)求頭數(shù)據(jù)
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 獲取的每頁(yè)數(shù)據(jù)條數(shù),一般建議成默認(rèn)的20就可以了,設(shè)置的太大,每頁(yè)包含的數(shù)據(jù)量就大,某一條電影數(shù)據(jù)出錯(cuò)會(huì)導(dǎo)致其它數(shù)據(jù)也被拋棄。
data = []
error = []
 
 
def get_data(p_year=1987):  # 按照年份獲取當(dāng)年度所有的電影數(shù)據(jù)
    url = 'http://front-gateway.mtime.com/mtime-search/search/unionSearch2'  # 請(qǐng)求的url
    params = {'year': p_year, 'pageSize': pagesize, 'pageIndex': 1, 'searchType': 0}  # 請(qǐng)求的表單數(shù)據(jù)
    # 獲取當(dāng)年度所有的電影的數(shù)量,繼而計(jì)算要獲取多少頁(yè)
    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)
 
    # 定義變量
    來(lái)源 = '時(shí)光網(wǎng)'
    年代 = p_year
    ID, 中文名, 英文名, 類型, 形式, 海報(bào)url, 評(píng)分, 導(dǎo)演, 主演, 詳情, 可播放, 國(guó)家地區(qū), 上映日期, 片長(zhǎng), 票房, 觀看日期 = [''] * 16
 
    for page in range(pages):  # todo 一共要獲取多少頁(yè)
        if page % 10 == 0:  # 每10頁(yè)輸出一次進(jìn)度
            print(f'已完成 {100 * page / pages:.2f}%')
        pageindex = page + 1
        params = {'year': p_year, 'pageSize': pagesize, 'pageIndex': pageindex, 'searchType': 0}  # 請(qǐng)求的表單數(shù)據(jù)
        try:  # 獲取指定頁(yè)的電影數(shù)據(jù)
            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']
                海報(bào)url = movie['img']
                其它譯名 = movie['titleOthersCn']
                評(píng)分 = movie['rating']
                導(dǎo)演 = movie['directors']
                主演 = movie['actors']
                詳情 = movie['href']
                可播放 = movie['canPlay']
                國(guó)家地區(qū) = movie['locationName']
                上映日期 = movie['realTime']
                片長(zhǎng) = movie['length']
                info = [來(lái)源, 年代, ID, 中文名, 英文名, 類型, 形式, 海報(bào)url, 其它譯名, 評(píng)分, 導(dǎo)演, 主演, 詳情, 可播放, 國(guó)家地區(qū), 上映日期, 片長(zhǎng), 票房, 觀看日期]
                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"出錯(cuò)啦,出錯(cuò)年份:{p_year},pagesize:{pagesize},page:{pageindex},出錯(cuò)原因:{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, ['來(lái)源', '年代', 'ID', '中文名', '英文名', '類型', '形式', '海報(bào)url', '其它譯名', '評(píng)分', '導(dǎo)演', '主演', '詳情', '可播放', '國(guó)家地區(qū)', '上映日期', '片長(zhǎng)', '票房', '觀看日期'])
    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'運(yùn)行時(shí)長(zhǎng):{runtime:.3f}秒。') 

輸出結(jié)果:

已完成 0.00%
已完成 11.63%
已完成 23.26%
已完成 34.88%
已完成 46.51%
已完成 58.14%
已完成 69.77%
已完成 81.40%
已完成 93.02%
運(yùn)行時(shí)長(zhǎng):27.906秒。

雖然示例中獲取的是2020年的數(shù)據(jù),但是由于代碼中采用的是多線程,所以如果是獲取一段時(shí)間的數(shù)據(jù)時(shí)耗費(fèi)的時(shí)間也和這個(gè)差不多。
最后保存到excel中的數(shù)據(jù)如下:

從自動(dòng)化辦公到智能化辦公

到此這篇關(guān)于Python獲取時(shí)光網(wǎng)電影數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python時(shí)光網(wǎng)電影內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 如何查看程序內(nèi)存占用情況

    Python 如何查看程序內(nèi)存占用情況

    這篇文章主要介紹了Python 如何查看程序內(nèi)存占用情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python基礎(chǔ)之內(nèi)置函數(shù)

    python基礎(chǔ)之內(nèi)置函數(shù)

    這篇文章主要介紹了python內(nèi)置函數(shù),實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python配置虛擬環(huán)境圖文步驟

    Python配置虛擬環(huán)境圖文步驟

    在本文中我們給大家詳細(xì)整理了關(guān)于Python配置虛擬環(huán)境的相關(guān)步驟以及圖文說(shuō)明,需要的朋友們學(xué)習(xí)下。
    2019-05-05
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將多個(gè)映射合并為單個(gè)映射的方法,結(jié)合實(shí)例形式分析了Python字典映射合并操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理

    Python2和3字符編碼的區(qū)別知識(shí)點(diǎn)整理

    在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • matplotlib更改窗口圖標(biāo)的方法示例

    matplotlib更改窗口圖標(biāo)的方法示例

    這篇文章主要介紹了matplotlib更改窗口圖標(biāo)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python實(shí)現(xiàn)猜拳小游戲

    python實(shí)現(xiàn)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python?文件處理之open()函數(shù)

    Python?文件處理之open()函數(shù)

    這篇文章主要介紹了Python?文件處理之open()函數(shù),在?Python?中使用文件的關(guān)鍵函數(shù)是?open()?函數(shù),關(guān)于其打開文件的不同方式需要的小伙伴可以參考下面詳細(xì)介紹
    2022-03-03
  • Matplotlib中rcParams使用方法

    Matplotlib中rcParams使用方法

    這篇文章主要介紹了Matplotlib中rcParams使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python通過pillow識(shí)別動(dòng)態(tài)驗(yàn)證碼的示例代碼

    python通過pillow識(shí)別動(dòng)態(tài)驗(yàn)證碼的示例代碼

    在上網(wǎng)時(shí),經(jīng)常會(huì)遇到驗(yàn)證碼,本次試驗(yàn)將帶領(lǐng)大家認(rèn)識(shí)驗(yàn)證碼的一些特性,并利用 Python 中的 pillow 庫(kù)完成對(duì)驗(yàn)證碼的破解。感興趣的可以了解一下
    2021-11-11

最新評(píng)論