【独家】【python爬虫实战】用python爬取爱奇艺电视剧十大榜单的全部数据!
时间:2023-06-08 06:29:18 来源:博客园
本次爬取的目标是,爱奇艺电视剧类目下的10个榜单:电视剧风云榜-爱奇艺风云榜
可以看到,这10个榜单包含了:热播榜、飙升榜、必看榜、古装榜、言情榜、都市榜、搞笑榜、年代榜、悬疑榜、奇幻榜。
我们以热播榜为例,打开Chrome浏览器,按F12进入开发者模式,选择网络 -> XHR这个选项,重新刷新一下页面,并且逐次下拉页面到最底部,展现出全部100部电视剧:
(资料图片仅供参考)
查看捕获到的请求链接地址,每翻一次页,出现一条链接地址,并且该地址的响应数据就是20条电视剧的数据。所以,这个地址就是我们要请求的地址了。
二、讲解代码首先,导入需要用到的爬虫库:
import requests # 发送请求import pandas as pd # 存入excel文件from time import sleep # 随机等待,防止反爬import random # 设置随机
从请求地址的Request Header处,拷贝过来一个请求头,放到代码里:
headers = {"accept": "application/json, text/plain, */*","accept-encoding": "gzip, deflate, br","accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7","origin": "https://www.iqiyi.com","referer": "https://www.iqiyi.com/","sec-ch-ua": "" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"","sec-ch-ua-mobile": "?1","sec-ch-ua-platform": ""Android"","sec-fetch-dest": "empty","sec-fetch-mode": "cors","sec-fetch-site": "same-site","user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Mobile Safari/537.36"}
爱奇艺的这个榜单页面,反爬不那么厉害,请求头中连cookie都不用加!由于我想自动爬取这10个榜单,每个榜单对应一个tag标签,从哪里获取呢?经过分析,是从另外一个请求地址返回的:发现了吗?每个榜单名称是一个tagName,对应一个tagId。拿到tagId,带入到榜单数据的请求地址中:
for page in range(1, 5):url = "https://pcw-api.iqiyi.com/strategy/pcw/data/topRanksData?page_st={}&tag={}&category_id=2&date=&pg_num={}".format(v_tag_id, v_tag_id, page)r = requests.get(url, headers=headers)
这样,就完成了向页面发送请求的过程。
顺便说一下这个for循环,一共翻4页,每页25条数据,对应一共100部电视剧。
用json格式接收返回的数据:
json_data = r.json()
然后开始解析json数据:
content_list = json_data["data"]["formatData"]["data"]["content"]for content in content_list:# 排名order_list.append(order)# 标题title_list.append(content["title"])print(order, " ", content["title"])# 描述try:desc_list.append(content["desc"])except:desc_list.append("")# 标签tags_list.append(content["tags"])tag_info = content["tags"].split(" / ")# 上映年份year = tag_info[0]year_list.append(year)# 主演actor = tag_info[-1]actor_list.append(actor)# 弹幕try:danmu_list.append(content["danmu"].replace("条弹幕", ""))except:danmu_list.append("")# 霸榜try:babang_list.append(content["babang"])except:babang_list.append("")# 实时热度if v_tag_name == "飙升榜":index_list.append(content["index"] + "%")else:index_list.append(content["index"])order += 1
最后,依然采用我最顺手的方法,拼装成DataFrame的格式,保存到excel文件:
df = pd.DataFrame({"排名": order_list,"标题": title_list,"描述": desc_list,"标签": tags_list,"上映年份": year_list,"主演": actor_list,"弹幕": danmu_list,"霸榜": babang_list,"实时热度": index_list,})if v_tag_name == "飙升榜": # 如果是飙升榜,把excel标题中的"实时热度"改为"飙升幅度"df.rename(columns={"实时热度": "飙升幅度"}, inplace=True)df.to_excel("爱奇艺电视剧_{}.xlsx".format(v_tag_name), index=False)
这里,需要注意一个小逻辑,飙升榜的"实时热度"需要rename为"飙升幅度",因为飙升榜跟其他榜单不一样!
三、查看结果共爬取到10个榜单文件:
随便打开一个文件,比如,热播榜:
比如,都市榜:
除了搞笑榜有40+条数据,其他榜单都是100条数据,对应100部电视剧。
四、视频演示代码演示视频:https://www.bilibili.com/video/BV1fT4y1e7wd/
五、附完整源码完整源码:【python爬虫实战】用python爬取《爱奇艺风云榜》电视剧十大榜单!2023.6发布
我是 @马哥python说 ,持续分享python源码干货中!
标签:
最新文章推荐
- 【独家】【python爬虫实战】用python爬取爱奇艺电视剧十大榜单的全部数据!
- 当前动态:“鼠头罗生门”持续发酵:网友不买账校方通报,之前出过类似事件
- 【新视野】手机问题:努比亚Z30Pro怎么拍星空
- 【新视野】直击|卡霍夫卡水电站决堤,大水涌入市区,居民带着财物撤离
- 每日讯息!健之佳:王雁萍女士累计质押的公司股份数为129万股
- 天津市气象台发布雷雨大风蓝色预警/IV级/一般【2023-06-07】
- 全球快播:嫦娥五号发射的重大意义_嫦娥五号的重大意义
- 税收红利精准直达 经营主体减压力强信心
- 西安经开城投14亿元中票将付息 利率4.38%
- 创新“三问”工作法 激发人才工作“调研力”
X 关闭
资讯中心
2022-12-30
2021-10-18
2021-10-18
2021-10-18
X 关闭
热点资讯
-
1
刘向东:推动数实融合首先要增强数字经济服务实体经济的能力
-
2
上海籍阳性夫妻内蒙古密接、次密接者出现初筛阳性情况
-
3
内蒙古二连浩特:市民非必要不出小区、不出城
-
4
重庆一名潜逃24年的持枪抢劫嫌犯落网
-
5
销售有毒、有害食品 郭美美获刑二年六个月
-
6
陕西新增6名确诊病例1名无症状感染者 西安全面开展排查管控
-
7
《加强建设中国风湿免疫病慢病管理》倡议书:建立基层医院独立风湿科
-
8
游客因未购物遭导游辱骂?九寨沟:相关部门已介入调查
-
9
郭美美再入狱!销售有毒有害食品获刑2年6个月
-
10
2020年黄河青海流域冰川面积和储量较十年前缩减
-
11
5名“摸金校尉”落网 内蒙古警方破获一起盗掘古墓葬案