当前位置:网站首页>记录获取参赛选手信息过程
记录获取参赛选手信息过程
2022-08-04 05:26:00 【Drizzlejj】
背景介绍分析:
1.选手信息通过 Ajax 请求加载,不在 html 中,因此需要找到获取选手的接口。

2.该接口是一个 post 请求,需要携带参数发起请求。携带的参数包括了活动 id ,页数,每页加载选手数量,分组 id

3. 用户是可以点击选手的封面图跳转到选手详情页,选手详情页是选手的视频介绍。( iframe 中就是选手的视频)

4.因此要获取选手视频介绍,就需要拿到这个选手详情页的接口
5.选手详情页是一个 post 请求,携带了选手 id 和活动 id

6.heeaders 中对我们的请求头做了一些要求,比如活动id ,把必要的信息在请求的时候带上,不然会被反爬报错

开始写了:(为了保护该网站,网址等信息此处没写)
def jiandian():
headers = {
'activityid': '151882',
'cookie':'',
'User-Agent': '',
'origin': '',
'prefix': '',
'referer': ''
}
# 投票页链接
vote_url = " "
# 选手详情页地址
detail_url = ' '
# 投票页 post 请求需要携带的参数
vote_data = {
"ActivityId": 151882, "GroupId": 0, "PageIndex": 1, "PageSize": 30, "SearchKey": ""
}
# 发起请求
response = requests.post(url=vote_url,json=vote_data,headers=headers)
content = response.text
# 将获取内容转为字典
contenttodicy = json.loads(content)
# 得到选手列表
playerList = contenttodicy['Data']['List']
# 选手详情页的 headers
detail_headers = {
'activityid': '151882',
'cookie': '',
'User-Agent': ',
'prefix': '',
'referer':''
}
for player in playerList:
# 从选手字典中取出选手 id
playerId = player["Id"]
# 详情页 post 请求需要携带的参数
detail_data = {
"ActivityId": 151882, "Id": playerId
}
# 选手详情页发起请求
detail_response = requests.post(url=detail_url,json=detail_data,headers=detail_headers)
detail_content = detail_response.text
# 得到选手详情个人信息字典
detail_dict = json.loads(detail_content)
deal_player = detail_dict["Data"]
keys = ['Name','Intro','Cover','Detail']
# 取出选手名字、简介、封面、视频 保存到一个列表
# play_info = [deal_player.get(key) for key in keys]
# 取出选手名字、简介、封面、视频 保存到一个字典
play_info = dict([(key,deal_player[key]) for key in keys])
with open('player.json', 'a', encoding='utf-8') as fp:
fp.write(str(play_info)+',')得到的结果如下:

本次没有对数据进行再次处理,例如需要在每个封面前加上地址,得到的视频需要把 iframe 给截取出来才能使用,最后使用 pandas 把数据写入表格。
感悟:得到数据是比较容易的,数据清理是最麻烦的
边栏推荐
猜你喜欢

腾讯136道高级岗面试题:多线程+算法+Redis+JVM

FPGA学习笔记——知识点总结

Cannot read properties of null (reading ‘insertBefore‘)

npm报错Beginning October 4, 2021, all connections to the npm registry - including for package installa

C1认证之web基础知识及习题——我的学习笔记

npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND

Delphi-C端有趣的菜单操作界面设计

7.16 Day22---MYSQL (Dao mode encapsulates JDBC)

读者让我总结一波 redis 面试题,现在肝出来了

解决JDBC在web工程中无法获取配置文件
随机推荐
字节最爱问的智力题,你会几道?
大龄程序员的心理建设
7.18 Day23----标记语言
SLSA 框架与软件供应链安全防护
Unity Visual Effect Graph入门与实践
php将多维数据保存进json文件
EventBus源码分析
npm init [email protected] 构建项目报错SyntaxError: Unexpected token ‘.‘解决办法
webrtc中的视频编码(一) 视频编码模块轮廓
Programming hodgepodge (3)
FLV格式详解
7.15 Day21---MySQL----索引
C language -- operator details
MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log
DP4398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片
注意!软件供应链安全挑战持续升级
word 公式编辑器 键入技巧 | 写数学作业必备速查表
再识关联容器
Several ways to heavy
Unity DOTS学习教程汇总