亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python獲取時光網電影數據

發布時間:2022-09-05 09:48:55 來源:億速云 閱讀:195 作者:iii 欄目:開發技術

今天小編給大家分享一下怎么用Python獲取時光網電影數據的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

準備

1 安裝庫

requests:網絡數據請求并獲取,安裝方式:pip install requests
threading:多線程處理(數據量比較大),Python自帶庫,無需安裝。
json:數據處理,Python自帶庫,無需安裝。
pandas:將數據導出成excel表格,安裝方式:pip install pandas

2 原理介紹

1、先通過requests庫,通過時光網自帶的電影數據API接口,獲取到指定的電影數據。
2、將獲取到的數據經過簡單的加工,通過pandas庫存入到excel表格中。

實例

完整代碼

# 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://front-gateway.mtime.com/mtime-search/search/unionSearch3'  # 請求的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獲取時光網電影數據”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安龙县| 西盟| 巴林右旗| 太谷县| 新丰县| 巴塘县| 华亭县| 沧州市| 连南| 灵武市| 泽普县| 大竹县| 波密县| 邻水| 民县| 文水县| 炉霍县| 高淳县| 浮山县| 大邑县| 云霄县| 凭祥市| 万山特区| 杭州市| 罗源县| 治多县| 平陆县| 辰溪县| 宁明县| 雷波县| 石门县| 合江县| 耒阳市| 贺州市| 南充市| 罗江县| 博爱县| 武义县| 四子王旗| 剑阁县| 侯马市|