当前位置:网站首页>记录获取参赛选手信息过程
记录获取参赛选手信息过程
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 把数据写入表格。
感悟:得到数据是比较容易的,数据清理是最麻烦的
边栏推荐
猜你喜欢

Linux环境下redis的下载、安装和启动(建议收藏)

MySQL database (basic)

Unity Visual Effect Graph入门与实践
![Embedded system driver primary [4] - under the basis of character device driver _ concurrency control](/img/96/5224d2de152eb738703cd201fb8407.png)
Embedded system driver primary [4] - under the basis of character device driver _ concurrency control

Can 't connect to MySQL server on' localhost3306 '(10061) simple solutions

Code Refactoring: For Unit Testing

Unity自动生成阻挡Collider的GameObject工具

Wwise入门和实战

8. Custom mapping resultMap

TensorRT例程解读之语义分割demo
随机推荐
Handling List
在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器
Programming hodgepodge (4)
Embedded system driver primary [3] - _IO model in character device driver foundation
字符串常用方法
The string class introduction
企业需要知道的5个 IAM 最佳实践
PHP解决字符乱码问题(多种编码转换)
4.2 Declarative Transaction Concept
力扣:746. 使用最小花费爬楼梯
12、分页插件
FFmpeg源码分析:avformat_open_input
8.03 Day34---BaseMapper query statement usage
Unity动画生成工具
渗透测试(PenTest)基础指南
sql server如何得到本条记录与上一条记录的差异,即变动值
擎朗智能全国研发创新中心落地光谷:去年曾获2亿美元融资
Grain Mall - Basics (Project Introduction & Project Construction)
Cannot read properties of null (reading 'insertBefore')
力扣:343. 整数拆分