前言
嗨喽~大家好呀,这里是魔王呐 !
知识点:
-
动态数据抓包
-
requests发送请求
-
json数据解析
开发环境:
-
python 3.8
运行代码
-
pycharm 2021.2
辅助敲代码
-
requests
pip install requests
思路分析
如何去实现一个案例:
简单的 基础知识点内容比较多的案例
批量 采集 互联网当中数据
原理: 模拟 浏览器/客户端 向 服务器 发送网络请求
第一个步骤
找到数据来源
实现代码:
-
发送请求
-
获取数据
-
解析数据
-
保存数据
代码展示
导入模块
import requests # 发送请求 第三方模块
import re
请求头
# 请求体 也得是字典?
json = {
'operationName': "visionSearchPhoto",
'query': "fragment photoContent on PhotoEntity {\n id\n duration\n caption\n originCaption\n likeCount\n viewCount\n realLikeCount\n coverUrl\n photoUrl\n photoH265Url\n manifest\n manifestH265\n videoResource\n coverUrls {\n url\n __typename\n }\n timestamp\n expTag\n animatedCoverUrl\n distance\n videoRatio\n liked\n stereoType\n profileUserTopPhoto\n musicBlocked\n __typename\n}\n\nfragment feedContent on Feed {\n type\n author {\n id\n name\n headerUrl\n following\n headerUrls {\n url\n __typename\n }\n __typename\n }\n photo {\n ...photoContent\n __typename\n }\n canAddComment\n llsid\n status\n currentPcursor\n tags {\n type\n name\n __typename\n }\n __typename\n}\n\nquery visionSearchPhoto($keyword: String, $pcursor: String, $searchSessionId: String, $page: String, $webPageArea: String) {\n visionSearchPhoto(keyword: $keyword, pcursor: $pcursor, searchSessionId: $searchSessionId, page: $page, webPageArea: $webPageArea) {\n result\n llsid\n webPageArea\n feeds {\n ...feedContent\n __typename\n }\n searchSessionId\n pcursor\n aladdinBanner {\n imgUrl\n link\n __typename\n }\n __typename\n }\n}\n",
'variables': {'keyword': "换装", 'pcursor': "", 'page': "search"}
}
json和字典是两个东西
json和字典可以互相转换类型
到底什么是json?
json是一种数据交互格式
前后端数据交互
前端:网页
后端:数据传输
json在Python里面其实就是字符串 内容转换成 字典
日常生活中所用的字典
通过拼音找到字
通过:前面的找到:后面的内容
{“A”:“123”, “B”:{“C”:{“D”:“”}}}[“B”][“C”][“D”]
发送请求
response = requests.post(url=url, headers=headers, json=json)
获取数据
<Response [200]>: 请求成功
.text:
字符串
.json():
字典数据
.content:
获取二进制数据 视频/音频/图片
json_dict = response.json()
解析数据
feeds = json_dict['data']['visionSearchPhoto']['feeds']
# len(feeds): 测量feeds的长度
for i in range(0, len(feeds)):
photoUrl = feeds[i]['photo']['photoUrl']
caption = feeds[i]['photo']['caption']
caption = re.sub('[\\\/:*?"<>|\\n]', '_', caption)
print(caption, photoUrl)
保存数据
video_data = requests.get(photoUrl).content
with open(f'video/{caption}.mp4', mode='wb') as f:
f.write(video_data)
效果展示
推荐往期文章
对python感兴趣的小伙伴也可以看一下博主其他相关文章哦~
python小介绍:
python是什么?工作前景如何?怎么算有基础?爬数据违法嘛?。。
python数据分析前景:
用python分析“数据分析”到底值不值得学习,以及学完之后大概能拿到多少工资
python基础自测题:
最后推荐一套Python视频给大家,希望对大家有所帮助:
尾语
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝
网友评论