• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python爬虫爬取爱奇艺电影片库首页的实例代码

    上篇文章给大家介绍了Python爬取爱奇艺电影信息代码实例 感兴趣的朋友点击查看下。

    今天给大家介绍Python爬虫爬取爱奇艺电影片库首页,下面是实例代码,参考下:

    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
    #连接数据库  获取游标
    def get_conn():
        """
        :return: 连接,游标
        """
        # 创建连接
        conn = pymysql.connect(host="82.157.112.34",
                        user="root",
                        password="root",
                        db="MovieRankings",
                        charset="utf8")
        # 创建游标
        cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
        if ((conn != None)  (cursor != None)):
            print("数据库连接成功!游标创建成功!")
        else:
            print("数据库连接失败!")
        return conn, cursor
    #关闭数据库连接和游标
    def close_conn(conn, cursor):
        if cursor:
            cursor.close()
        if conn:
            conn.close()
        return 1
    def get_iqy():
        #   获取数据库总数据条数
        conn, cursor = get_conn()
        sql = "select count(*) from movieiqy"
        cursor.execute(sql)     #   执行sql语句
        conn.commit()       #   提交事务
        all_num = cursor.fetchall()[0][0]       #cursor 返回值的类型是一个元祖的嵌套形式 比如( ( ) ,)
        pagenum=int(all_num/48)+1               #这里是计算一个下面循环的起始值    每48个电影分一组
        print(pagenum)
        print("movieiqy数据库有", all_num, "条数据!")
    
    
        url = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1data_type=1mode=11page_id=1ret_num=48session=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 = []      #暂时存放单部电影的数据
        dataRes = []        #每次循环把单部电影数据放到这个list
        for i in range(pagenum+1, pagenum+100):         #循环100-1次
            url = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1data_type=1mode=11page_id=1ret_num=48session=ee4d98ebb4e8e44c8d4b14fa90615fb7"
            url_0 = "https://pcw-api.iqiyi.com/search/recommend/list?channel_id=1data_type=1mode=11page_id="
            url_0 = url_0 + str(i) + "ret_num=48session=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)
            #这里的异常捕获是因为     测试循环的次数有可能超过电影网站提供的电影数 为了防止后续爬到空的json对象报错
            try:
                json_list = json_obj['data']['list']
            except KeyError:
                return dataRes          #json为空 程序结束
            for j in json_list:         #   开始循环遍历json串
                # print(json_list)
                name = j['name']        #找到电影名
                print(name)
                temp_list.append(name)
                #异常捕获,防止出现电影没有评分的现象
                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)
                # 解析播放状态
                state = []
                pay_text = j['payMarkUrl']          #因为播放状态只有在一个图片链接里有 所以需要使用re解析出类似vip和only(独播)的字样
                if (len(pay_text) == 0):            #如果没有这个图片链接 说明电影是免费播放
                    state="免费"
                else:
                    find_state = re.compile("(.*?).png")
                    state = re.findall(find_state, pay_text)        #正则匹配链接找到vip
                    if(len(state)!=0):              #只有当链接不为空再执行
                        # print(state)
                        # 再次解析
                        state = state[0][0:3]       #字符串分片
    
                        # 这里只输出了三个字符,如果是独播,页面显示的是only,我们设置为”独播“
                        if (state == "onl"):
                            state = "独播"
                        else:
                            state = "VIP"
                # print(state)
                # 添加播放状态
                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()}开始插入爱奇艺电影数据")
            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('___________________________')
                #异常捕获,防止数据库主键冲突
                try:
                    cursor.execute(sql, [0, item[0], item[1], item[2], item[3] ])
                except pymysql.err.IntegrityError:
                    print("重复!跳过!")
    
            conn.commit()  # 提交事务 update delete insert操作
            print(f"{time.asctime()}插入爱奇艺电影数据完毕")
        except:
            traceback.print_exc()
        finally:
            close_conn(conn, cursor)
        return;
    
    if __name__ == '__main__':
        # get_iqy()
        insert_iqy()

    到此这篇关于Python爬虫爬取爱奇艺电影片库首页的实例代码的文章就介绍到这了,更多相关Python爬取爱奇艺电影内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python编程开发之textwrap文本样式处理技巧
    • Python的文本常量与字符串模板之string库
    • Python中使用subprocess库创建附加进程
    • Python超简单容易上手的画图工具库推荐
    • python爬虫请求库httpx和parsel解析库的使用测评
    • Python高级文件操作之shutil库详解
    • Python超简单容易上手的画图工具库(适合新手)
    • python学习之panda数据分析核心支持库
    • Python基础之操作MySQL数据库
    • Python绘图库Matplotlib的基本用法
    • Python Excel处理库openpyxl详解
    • python使用openpyxl库读写Excel表格的方法(增删改查操作)
    • Python time库的时间时钟处理
    • Python基础之常用库常用方法整理
    • python数据库批量插入数据的实现(executemany的使用)
    • Python爬虫之必备chardet库
    • python中requests库+xpath+lxml简单使用
    • Python格式化文本段落之textwrap库
    上一篇:django将图片保存到mysql数据库并展示在前端页面的实现
    下一篇:Python基础之Numpy的基本用法详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python爬虫爬取爱奇艺电影片库首页的实例代码 Python,爬虫,爬取,爱奇,艺,