以下均为个人学习使用,不得商用

一些闲话:

作为一个爬虫初学者,我个人觉得自动化是难度比较低的一个爬虫,网站对自动化的反爬机制比较少。之前我做requests爬虫只能爬几个,有几个过几天就爬不了了。但是自动化就很香,不用逆向啥的就很爽,效率也是稍微有点低,但也能接受。总之作为一个新手来分享自己的学习经验并且能够在这里学习也是很开心啊o( ̄▽ ̄)ブ
/------------------------正文------------------------------/
在抖音网页版个人空间中采用异步加载视频资源,标题点赞及链接都在post/文件里面

image
但是视频资源网址有点隐秘(不知道是不是故意而为之),这么多的视频url只有一个能用(找到的)。
image
第一个无法访问第三个没有声音,只有第二个才是完整的视频。
获取到完整的视频资源后就要着手写爬虫啦
其实思路非常简单,用drissionpage监听特定的数据包(也就是post/包),用自动化模拟下拉滚动刷新数据包,最后做数据的筛选就ok
监听就三行代码,开始等待结束;但下拉刷新的话还要去结合具体的数据包来判断是否结束滚动行为。在需要监听的包中发现has_more是判断还有无下面数据的标准,1即为下面还有数据,0代表这就是最后一条数据,顺带一提,在爬取这样大网站的时候,登录是必须的,刚开始可以访问页面后等待个一两分钟,自己手动登录,我这里直接按照AI的教程来把cookie保存到本地了,具体的代码我都会给出,恳请各位大佬批评指正qwq;对于数据筛选,标题和点赞量都是问AI的时候顺道给出来的awa,但AI给的视频链接有问题,本文上面是对的。
BUT,写的过程中有点小问题:
首先是滚动问题,直接用page.scroll.down无法对网页滚动,一定要定位到能滚动的元素之后再进行下拉操作
image
再一个是线程问题,全程用单线程的话下拉刷新操作会堵塞进程,直到page.listen.wait()超时
所有就需要双线程,并开启守护线程,主线程来滚动刷新,子线程来数据监听保存。

最后的总结闲话:

看起来很简单的东西我花了两天时间来做,其实我主要有点困惑滚动操作和监听的先后顺序,但后来直接用双线程也理解了,哎呀主要还是语法记得太烂,好多东西都忘记了。还有就是我的代码可读性太差,我不太喜欢做注释,中间的运行提示也很少,就导致解决报错花了很长时间,还需要继续努力啊ovo还请各位大佬不吝赐教啊qwq

/------------------------代码------------------------------/

保存cookie至本地

image

项目中调用已保存的cookie

image

主体代码
image