赞
踩
为了方便内容的获取,可以登录账号进入个人主页在关注里面随机找一个博主的视频,进行操作。(图1所)
图1
鼠标右键网页点击检查,打开开发者工具。然后我们要找到network这个面板,进入后再刷新网页(图2所示),会在all下面出现该网页的全部数据包。我们再点开一个视频,会刷新新的数据包出来(图3所示)。这是因为我们要找到一个包含视频内容的一个数据包。如何找到呢?
图2
图3
可以直接找到视频的标题,也就是文案。我们Ctrl+C复制一下,然后到开发者工具里面,找打一个像放大镜一样的东西,他的功能就是搜索,把标题内容输入后,按回车就能看到新数据包出现。(如图4、图5所示)
对得到的数据包进行进一步分析。在response里面不方便查看,可以在preview里面分析(图6所示)有0到19共20条数据。
图4
图5
图6
我们点开第0条数据查看,在这里面有个值photo,photo里面有caption和photoUrl,他们分别代表标题和视频链接。(图7和图8所示)再进一步确定到网址的链接。(如图9所示)该网页的请求方式是post带参请求。和get请求不一样的是,PSOT请求的参数信息大部分隐藏。(图10)
如果想换爬取其他快手博主的视频,只需要改一下PSOT信息。
图7
图8
图9
图10
- #导入数据请求包和格式化输出
- import requests
- import pprint
-
- #1.确定爬取的网址 也就是刚刚数据源分析得出来的网址
- url='https://www.kuaishou.com/graphql'
-
- # 2.加入参数
- data={
- 'operationName': "visionProfilePhotoList",
- 'query': "fragment photoContent on PhotoEntity {\n id\n duration\n caption\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 __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 __typename\n}\n\nquery visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) {\n visionProfilePhotoList(pcursor: $pcursor, userId: $userId, page: $page, webPageArea: $webPageArea) {\n result\n llsid\n webPageArea\n feeds {\n ...feedContent\n __typename\n }\n hostName\n pcursor\n __typename\n }\n}\n",
- 'variables': {'userId': "3x3iabhcnyqpjry", 'pcursor': "", 'page': "profile"}
- }
-
- #3.伪装请求头==把爬虫工具变成浏览器
- headers={
- 'content-type':'application/json',
- 'Cookie':'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_ce160109a1bf80d6944c513ac1b89e35; client_key=65890b29; didv=1650350313666; userId=280125945; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqAB_lK0btH-z_yagSgMpgATInBwZ4__ULXh3W99D5dkU0egbhnM8iwL9DWt7LRUabIrw-lH0VAAhuvd68v0el3bpvbZQ3uXTOPbtvBBiJpYqnv_JmxJEedSw-mCHzksLi4e6nI6N8ZTmhy47vnJF3XE0jnXZnhA9fB_iI2ML3epLJiTeAM5SN8_yT7_59JamLdhzlPNE0Rp3FlUVMtMEhgKaxoSzFZBnBL4suA5hQVn0dPKLsMxIiBpDnAKlJAXQmofMqNYmrl6JSlHwTaiBKwxKDhxfPW2PigFMAE; kuaishou.server.web_ph=7fb016f4c4ed842ab0ea0f9d8c00224d4b99',
- 'Host':'www.kuaishou.com',
- 'Origin':'https://www.kuaishou.com',
- 'Referer':'https://www.kuaishou.com/profile/3x3iabhcnyqpjry',
- 'sec-ch-ua':'" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
- 'sec-ch-ua-mobile':'?0',
- 'sec-ch-ua-platform':'"Windows"',
- 'Sec-Fetch-Dest':'empty',
- 'Sec-Fetch-Mode':'cors',
- 'Sec-Fetch-Site':'same-origin',
- 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
- }
-
- # 4.发送请求 post请求 可以直接转JSON格式
- response=requests.post(url=url,json=data,headers=headers)
-
- # 5.获取数据 .json 拿到字典类型数据
- # pprint.pprint(response.json())
-
- # 6.解析数据 字典 键值对
- feeds=response.json()['data']['visionProfilePhotoList']['feeds']
-
- for feed in feeds:
- # 标题
- caption=feed['photo']['caption']
- photoUrl=feed['photo']['photoUrl']
- print(caption,photoUrl)
- # 转化成二进制
- videro_url=requests.get(url=photoUrl).content
- #保存数据
- with open('video\\'+caption+'.mp4','wb')as f:
- f.write(videro_url)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。