python爬取快手視頻--json數據分析


打開快手主頁,進行頁面分析
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190823112841208.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyZWFtX19fX0ZseQ==,size_16,color_FFFFFF,t_70)
對於快手這種平台,分析完頁面代碼之后,無任何想要的信息,所以,只能進行json數據的抓取,這些視頻都是通過json語句傳給前段,然后進行循環生成,所以,我們來看抓的json包
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190823113342286.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyZWFtX19fX0ZseQ==,size_16,color_FFFFFF,t_70)
然后進行詳情頁鏈接分析
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190823113642716.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyZWFtX19fX0ZseQ==,size_16,color_FFFFFF,t_70)
接下來看json數據
![在這里插入圖片描述](https://img-blog.csdnimg.cn/2019082311385577.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyZWFtX19fX0ZseQ==,size_16,color_FFFFFF,t_70)
補充一下,這里由於頁面刷新了,所以看到的兩個鏈接不一樣,方法就是這樣的
然后拼接出來二級路徑,進行訪問詳情頁
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190823114315219.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RyZWFtX19fX0ZseQ==,size_16,color_FFFFFF,t_70)
最后在詳情頁按照常規方法進行分析頁面爬取數據就行了
分享一下代碼

```code
import requests
from bs4 import BeautifulSoup
import json
import time

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
}

def first_get_request(first_request):
first_data = json.loads(first_request.text)
print(first_data)
#進入第二層
first_two_data = first_data['data']['videoFeeds']['list']
for num in first_two_data:
two_url = 'https://live.kuaishou.com/u/' + num['user']['id'] + '/' + num['photoId']
# print(two_url)
two_get_request(two_url)


def two_get_request(two_url):
two_data = requests.get(url=two_url,headers=headers,verify=False)
soup = BeautifulSoup(two_data.text,'lxml')
#頭像
name_photo = soup.select('.profile-user img')[0]['src']
#名字
name = soup.select('.video-card-footer-user-name')[0].text
#點贊量
number = soup.select('.profile-user-count-info > .watching-count')[0].text
#點心量
num = soup.select('.profile-user-count-info > .like-count')[0].text
#內容
text = soup.select('.profile-user > .profile-user-desc > span')[0].text
item = {
'頭像':name_photo,
'名字':name,
'內容':text,
'點贊量':number,
'點心量':num
}
with open('爬取的信息.txt','a',encoding='utf8') as f:
f.write(str(item) + '\n')

time.sleep(3)

def main():
first_url = 'https://live.kuaishou.com/graphql'
formdata = {
"operationName": "videoFeedsQuery", "variables": {"count": 50, "pcursor": "50"},
"query": "fragment VideoMainInfo on VideoFeed {\n photoId\n caption\n thumbnailUrl\n poster\n viewCount\n likeCount\n commentCount\n timestamp\n workType\n type\n useVideoPlayer\n imgUrls\n imgSizes\n magicFace\n musicName\n location\n liked\n onlyFollowerCanComment\n width\n height\n expTag\n __typename\n}\n\nquery videoFeedsQuery($pcursor: String, $count: Int) {\n videoFeeds(pcursor: $pcursor, count: $count) {\n list {\n user {\n id\n eid\n profile\n name\n __typename\n }\n ...VideoMainInfo\n __typename\n }\n pcursor\n __typename\n }\n}\n"
}
#訪問快手界面
first_request = requests.post(url=first_url,headers=headers,data=formdata,verify=False)
#分析首頁鏈接
first_get_request(first_request)

if __name__ == '__main__':
main()
```

最后就找到了我們想要的東西,


![在這里插入圖片描述](https://img-blog.csdnimg.cn/20210608151750993.gif)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM