最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲爬取愛奇藝電影片庫首頁的實(shí)例代碼

 更新時間:2021年05月06日 09:26:06   作者:楊傳偉  
這篇文章主要介紹了Python爬蟲爬取愛奇藝電影片庫首頁的實(shí)例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

上篇文章給大家介紹了Python爬取愛奇藝電影信息代碼實(shí)例 感興趣的朋友點(diǎn)擊查看下。

今天給大家介紹Python爬蟲爬取愛奇藝電影片庫首頁,下面是實(shí)例代碼,參考下:

import time
import traceback
import requests
from lxml import etree
import re
from bs4 import BeautifulSoup
from lxml.html.diff import end_tag
import json
import pymysql
#連接數(shù)據(jù)庫  獲取游標(biāo)
def get_conn():
    """
    :return: 連接,游標(biāo)
    """
    # 創(chuàng)建連接
    conn = pymysql.connect(host="82.157.112.34",
                    user="root",
                    password="root",
                    db="MovieRankings",
                    charset="utf8")
    # 創(chuàng)建游標(biāo)
    cursor = conn.cursor()  # 執(zhí)行完畢返回的結(jié)果集默認(rèn)以元組顯示
    if ((conn != None) & (cursor != None)):
        print("數(shù)據(jù)庫連接成功!游標(biāo)創(chuàng)建成功!")
    else:
        print("數(shù)據(jù)庫連接失??!")
    return conn, cursor
#關(guān)閉數(shù)據(jù)庫連接和游標(biāo)
def close_conn(conn, cursor):
    if cursor:
        cursor.close()
    if conn:
        conn.close()
    return 1
def get_iqy():
    #   獲取數(shù)據(jù)庫總數(shù)據(jù)條數(shù)
    conn, cursor = get_conn()
    sql = "select count(*) from movieiqy"
    cursor.execute(sql)     #   執(zhí)行sql語句
    conn.commit()       #   提交事務(wù)
    all_num = cursor.fetchall()[0][0]       #cursor 返回值的類型是一個元祖的嵌套形式 比如( ( ) ,)
    pagenum=int(all_num/48)+1               #這里是計(jì)算一個下面循環(huán)的起始值    每48個電影分一組
    print(pagenum)
    print("movieiqy數(shù)據(jù)庫有", all_num, "條數(shù)據(jù)!")


    url = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1&data_type=1&mode=11&page_id=1&ret_num=48&session=ee4d98ebb4e8e44c8d4b14fa90615fb7"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
    }
    # response=requests.get(url=url,headers=headers)
    # response.encoding="utf-8"
    # page_text=response.text
    # print(page_text)
    """
    """
    #
    temp_list = []      #暫時存放單部電影的數(shù)據(jù)
    dataRes = []        #每次循環(huán)把單部電影數(shù)據(jù)放到這個list
    for i in range(pagenum+1, pagenum+100):         #循環(huán)100-1次
        url = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1&data_type=1&mode=11&page_id=1&ret_num=48&session=ee4d98ebb4e8e44c8d4b14fa90615fb7"
        url_0 = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1&data_type=1&mode=11&page_id="
        url_0 = url_0 + str(i) + "&ret_num=48&session=ad1d98bb953b7e5852ff097c088d66f2"
        print(url_0)        #輸出拼接好的url
        response = requests.get(url=url_0, headers=headers)
        response.encoding = "utf-8"
        page_text = response.text
        #解析json對象
        json_obj = json.loads(page_text)
        #這里的異常捕獲是因?yàn)?    測試循環(huán)的次數(shù)有可能超過電影網(wǎng)站提供的電影數(shù) 為了防止后續(xù)爬到空的json對象報錯
        try:
            json_list = json_obj['data']['list']
        except KeyError:
            return dataRes          #json為空 程序結(jié)束
        for j in json_list:         #   開始循環(huán)遍歷json串
            # print(json_list)
            name = j['name']        #找到電影名
            print(name)
            temp_list.append(name)
            #異常捕獲,防止出現(xiàn)電影沒有評分的現(xiàn)象
            try:
                score = j['score']      #找到電影評分
                print(score)
                temp_list.append(score)
            except KeyError:
                print( "KeyError")
                temp_list.append("iqy暫無評分")            #替換字符串

            link = j['playUrl']             #找到電影鏈接
            temp_list.append(link)
            # 解析播放狀態(tài)
            state = []
            pay_text = j['payMarkUrl']          #因?yàn)椴シ艩顟B(tài)只有在一個圖片鏈接里有 所以需要使用re解析出類似vip和only(獨(dú)播)的字樣
            if (len(pay_text) == 0):            #如果沒有這個圖片鏈接 說明電影是免費(fèi)播放
                state="免費(fèi)"
            else:
                find_state = re.compile("(.*?).png")
                state = re.findall(find_state, pay_text)        #正則匹配鏈接找到vip
                if(len(state)!=0):              #只有當(dāng)鏈接不為空再執(zhí)行
                    # print(state)
                    # 再次解析
                    state = state[0][0:3]       #字符串分片

                    # 這里只輸出了三個字符,如果是獨(dú)播,頁面顯示的是only,我們設(shè)置為”獨(dú)播“
                    if (state == "onl"):
                        state = "獨(dú)播"
                    else:
                        state = "VIP"
            # print(state)
            # 添加播放狀態(tài)
            temp_list.append(state)
            dataRes.append(temp_list)
            # print(temp_list)
            temp_list = []

        print('___________________________')
    return dataRes

def insert_iqy():
    cursor = None
    conn = None
    try:
        count=0
        list = get_iqy()
        print(f"{time.asctime()}開始插入愛奇藝電影數(shù)據(jù)")
        conn, cursor = get_conn()
        sql = "insert into movieiqy (id,name,score,path,state) values(%s,%s,%s,%s,%s)"
        for item in list:
            print(item)
            count = count + 1
            if (count % 48 == 0):
                print('___________________________')
            #異常捕獲,防止數(shù)據(jù)庫主鍵沖突
            try:
                cursor.execute(sql, [0, item[0], item[1], item[2], item[3] ])
            except pymysql.err.IntegrityError:
                print("重復(fù)!跳過!")

        conn.commit()  # 提交事務(wù) update delete insert操作
        print(f"{time.asctime()}插入愛奇藝電影數(shù)據(jù)完畢")
    except:
        traceback.print_exc()
    finally:
        close_conn(conn, cursor)
    return;

if __name__ == '__main__':
    # get_iqy()
    insert_iqy()

到此這篇關(guān)于Python爬蟲爬取愛奇藝電影片庫首頁的實(shí)例代碼的文章就介紹到這了,更多相關(guān)Python爬取愛奇藝電影內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中一些深不見底的“坑”

    Python中一些深不見底的“坑”

    這篇文章主要給大家介紹了關(guān)于Python中一些深不見底的“坑”,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 使用50行Python代碼從零開始實(shí)現(xiàn)一個AI平衡小游戲

    使用50行Python代碼從零開始實(shí)現(xiàn)一個AI平衡小游戲

    本文會為大家展示機(jī)器學(xué)習(xí)專家 Mike Shi 如何用 50 行 Python 代碼創(chuàng)建一個 AI,使用增強(qiáng)學(xué)習(xí)技術(shù),玩耍一個保持桿子平衡的小游戲。本文給大家?guī)韺?shí)現(xiàn)思路及簡單代碼,感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • 使用python Fabric動態(tài)修改遠(yuǎn)程機(jī)器hosts的方法

    使用python Fabric動態(tài)修改遠(yuǎn)程機(jī)器hosts的方法

    今天小編就為大家分享一篇使用python Fabric動態(tài)修改遠(yuǎn)程機(jī)器hosts的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python爬取指定微信公眾號文章

    python爬取指定微信公眾號文章

    這篇文章主要為大家詳細(xì)介紹了python爬取指定微信公眾號文章,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python利用glob庫實(shí)現(xiàn)輕松應(yīng)對文件和目錄管理

    Python利用glob庫實(shí)現(xiàn)輕松應(yīng)對文件和目錄管理

    Python提供了glob庫,它允許我們根據(jù)特定模式匹配文件和目錄,本文將詳細(xì)介紹glob庫的用法,并通過實(shí)例演示它的各種功能,需要的可以了解一下
    2023-07-07
  • 基于python實(shí)現(xiàn)檢索標(biāo)記敏感詞并輸出

    基于python實(shí)現(xiàn)檢索標(biāo)記敏感詞并輸出

    這篇文章主要介紹了基于python實(shí)現(xiàn)檢索敏感詞并輸出,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • python中g(shù)lobal與nonlocal比較

    python中g(shù)lobal與nonlocal比較

    這篇文章主要介紹了python中g(shù)lobal與nonlocal比較,global關(guān)鍵字用來在函數(shù)或其他局部作用域中使用全局變量,nonlocal關(guān)鍵字用來在函數(shù)或其他作用域中使用外層(非全局)變量,需要的朋友可以參考下
    2014-11-11
  • Python獲取腳本所在目錄的正確方法

    Python獲取腳本所在目錄的正確方法

    這篇文章主要介紹了Python獲取腳本所在目錄的正確方法,需要的朋友可以參考下
    2014-04-04
  • python 測試實(shí)現(xiàn)方法

    python 測試實(shí)現(xiàn)方法

    使用python進(jìn)行測試也足夠簡明了
    2008-12-12
  • PyCharm 2019.3發(fā)布增加了新功能一覽

    PyCharm 2019.3發(fā)布增加了新功能一覽

    這篇文章主要介紹了PyCharm 2019.3發(fā)布,增加了新功能一覽,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論

黄山市| 彝良县| 民县| 孙吴县| 濉溪县| 汨罗市| 中宁县| 保定市| 霍林郭勒市| 白朗县| 临夏县| 潼南县| 英山县| 全椒县| 客服| 达孜县| 龙里县| 基隆市| 唐河县| 长春市| 兴义市| 齐齐哈尔市| 科技| 高要市| 台东市| 镇康县| 鹤岗市| 固始县| 龙里县| 安乡县| 会理县| 离岛区| 哈巴河县| 仪征市| 正阳县| 札达县| 商都县| 丹阳市| 如东县| 米林县| 康定县|