文章采集完(网页元素与网页源代码的区别(x4)分析(x4) )
优采云 发布时间: 2021-11-21 16:09文章采集完(网页元素与网页源代码的区别(x4)分析(x4)
)
内容
前言
分析 (x0)
分析 (x1)
分析 (x2)
分析 (x3)
分析 (x4)
总结
我有话要说
前言
大家好,我叫山年,这是我的第三篇技术博文。这次是音乐、小说、视频,也许下次是图片。
文章 我是在同一天写的,我自己从来没有做过。
我们要去采集的网站是网页版的DY数据:目标网址
给采集随便选一个博主的视频吧,饿了就找美食博主。
分析 (x0)
在网页元素中,我们可以找到当前视频的跳转链接:
经过我的观察,我发现每个li标签都收录一个短视频信息:
?
所以一共有13个li标签,我们的博主应该已经发布了13个以上的视频吧?不是我这种东西只有几十个粉丝,有什么问题?
我已经猜到这是一个瀑布模式加载视频,我给你解释一下。比如你在一个网页上只能看到十个数据,当你拉动网页的滑动条时,它会自动加载一些新的数据。数据像瀑布一样流出。原理很简单,就是当你拉动滑块时,它会触发一个JavaScript脚本来生成一些新的数据。
让我们做一个测试:
当我拉动浏览器的滚动条时,数据显着增加并改变了网页上的元素。
这里我再解释一下,网页元素和网页源码的区别:
网页元素:浏览器执行一些JavaScript渲染后的渲染(所以它会改变)
网页源代码:服务器发送给我们浏览器的原创数据(浏览器渲染后变成网页元素),所以原创数据不会改变。
那么瀑布流的优势是什么?明明是为了减少服务器的负载?用户可以传输任意数量的数据,而不是在一个大脑中加载所有数据!
分析 (x1)
换句话说,我们根本不需要考虑网页的源代码(因为它是不可变的)。据了解,该网页的视频是通过拉动浏览器滑块执行JavaScript脚本,然后通过接口传输数据给我们造成的。
首先我们可以观察到,每个视频后面的一串数字就是视频对应的ID值,前面肯定是不变的。
我们直接抓包:
根据瀑布流定律,这个包很容易被抓到,因为每次滑动下拉条,都会生成这样一个新包
确实这个值对应,但是别忘了看上图中圈起来的_signature参数,传说中的DY签名加密。其他值是固定值是一些电脑信息,浏览器版本。只有这个 _signature 是加密的。您可以通过手动拉动滑杆并多抓取几个数据包来进行比较。
分析 (x2)
好吧,很多人认为我会解密这个参数,但是新版本的DY加密很混乱,即使我能教你,我也可能学不来,所以我决定回去用另一种方法。
我们当时分析,只要拉动滑块,网页元素中就会加载新的视频数据,并且会出现更多的li标签。
那我们就可以用selenium来模拟人拉滑杆了吧?然后采集进入视频的跳转链接,访问请求,问题解决!
但是获取视频跳转链接有什么用呢?
分析 (x3)
我们先点开视频看看:
视频的源地址我一下子就抓到了,但是这个地址根本没有规律……但是听了我上次告诉你的音乐之后,你应该知道如何分析它了。, 先试着把一些参数删了这么久,看看还能不能正常访问。最短且可访问的链接是我在红框中的链接。
然后……还是找不到规则,不知道怎么生成,发现这个包之前只是一个图片包。
分析 (x4)
继续查看网页元素中是否有我们的视频源地址:
果然有emmm,希望现在源码里也有,因为之前采集跳转链接我用的是selenium,降低了采集的速度。如果这里还是用selenium的话,速度会太慢。.
什么都没找到……按道理,我之前抓了包,里面没有JavaScript文件。那只是一包图片。没有理由不存在于网页的源代码中。我搜索了一下并尝试了:
说实话,这是我第一次自己做。我正在写作和研究。纯属实战。我刚刚在这个东西上看到了它,它编码了url,所以它似乎伤害了我们的眼睛。
好吧,我们只需要采集 来缩短到最短的链接。
转码给大家看:
我们只需要红色框中的那些。
那么现在,所有的流程创意都完成了吗?
首先使用selenium采集去重定向的url,然后使用requests模块请求重定向的url,获取视频源地址,最后请求源地址下载。
总结
这只是采集一个博主的视频,那么整个网站采集的视频可以吗?我分析了一下,发现原理是一模一样的……有可能!
我有话要说
您在寻找源代码吗?很遗憾我是第一次这样做。写完文章,终于分析完了,我自己也没有源码。
——纸上谈兵总是肤浅的,我绝对知道我必须亲自去做。
如果这个分析还是让一些朋友觉得困难,那我给你看一个我之前提到的完美采集某宝的案例,selenium部分非常适合(在我主页的联系我中),要求我赢了不谈部分,完全没有技术含量,就两个要求。
文章的字现在就写好了,每一个文章都会写的很详细,所以需要很长时间,一般两个多小时。
原创不容易,再次感谢大家的支持。
①2000多本Python电子书(主流经典书籍应有)
②Python标准库资料(最全中文版)
③项目源码(四十或五十个有趣经典的动手项目和源码)
④Python基础、爬虫、Web开发、大数据分析视频(适合小白学习)
⑤ Python 学习路线图(告别未受影响的学习)
```
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢?
学习Python中有不明白推荐加入交流Q群号:928946953
群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
还有大牛解答!
```