首页 > 快手网红 > python可以爬取快手视频吗?
2022
10-08

python可以爬取快手视频吗?

  在网页里面按下F12,打开开发者模式,点击网络,查看Fetch/XHR。看看里面的请求。

  找到一个叫graphql的请求。这个就是评论的请求。我们点击进去,然后查看预览。可以看到如下效果。

  返回的是一个json数据,这下就好办了。我们现在只要模仿浏览器给快手服务器发送请求就行了。

  首先,我们来看一下这个是个什么请求,是个get请求还是post请求。(一般都是post)点击表头。查看请求。

  我们可以看到,这是个post请求,请求url是,发送post请求都是要带一些表单数据的。

  可以看到这个请求负载里的数据就是我们要传输的数据了,这个请求负载不同于Form data的。Form data传输的一个字典,而 Request Payload是一个json数据。这个有所不同,如果你此时还是传入一个dict数据的话,是不会返回数据的。必须传入json数据。那么我现在就可以用python发送请求了。做到这里一切都很顺利!!

  但是,好像有个问题,只有28条,返回数据不全,what,fuck!,看来是遇到问题了。

  没关系,我又重新运行了几次,还是不行。我又回到快手页面。又打开开发者模式。开始找问题。突然我发现,有好多个叫graphql的请求。此时,我就猜想,是不是这个是动态加载的,你将评论往下滑,它才会加载。取好几个graphql的请求数据进行对比,发现只有photoId和pcursor其中的数据不同。经过我的仔细查找发现,这个photoId就是这个视频的id,那个网页地址上都有。不同的视频photold才不同。行了,photold解决了,那pucursor呢,这个是个什么鬼?我看了几个graphql的传输的数据,除了第一个graphql的pucursor是空的。其他的都全是数字。然后我打印了那返回不全的json的数据。发现了一个惊人的秘密。pucursor里面数据是上一个graphql返回的数据里面最后一个人的id。解密了!!!,他是动态渲染的,pucursor接收上一个发评论的人的id来发送下一个请求,从而请求数据。

  兄弟们,今天就到这里了,剩余就靠你们自己发挥了,(偷偷告诉你们哦,这个不止可以对快手哦,好多网站都可以这样)。但是还是遵守法律法规。下次教兄弟们怎么用python群发消息,也是post请求哦!


本文》有 0 条评论

留下一个回复