我在整理后面几篇帖子的时候发现,如果不给各位好好剖析⼀下web请求的全部过程,
后⾯我们遇到的各种各样的⽹站⼊⼿会很难。所以,还是先理论再斩天龙。
我们浏览器在输⼊搜索的东西,两秒后我们看到⽹⻚的整体内容, 这个过程中究竟发⽣了些什么?
这⾥我们以Bing为例。在访问Bing的时候,浏览器(通过网络)会把这⼀次请求发送到Bing的服务器。服务器接收到这个请求后会加载相关数据返回给浏览器,这部分数据就是源代码,这些代码被浏览器APP加载、执⾏,最后把结果以文字、图片、视频等形式展示给⽤户。
因此,我们要想获取我们想要的数据就必须拿到这部分源代码,然后再写浏览器执行的步骤,把这部分代码可视化。
获取源代码不难,很多都是不加密的,但是吸引我们的反而是那些加密的!如何从一堆代码里找到加密的部分然后破解是难点之一。也可以说是唯一的难点。所以你需要具备一些基础的编写网页的知识!要不然你看不懂源代码咋办!不慌,我会教给大家!
加密的方式有很多种,咱们以后慢慢聊。
还剩下一些篇幅,我打算跟大家说说浏览器页面渲染数据的方式。
为什么呢?按这个逻辑想,从看到的
文字、图片、视频等信息,我们去找源代码,但是找到以后我们只拿走我们需要的那部分数据,所以,知道浏览器怎么渲染数据的是一个很重要的信息。
也就是说只有知道渲染方式,我们才能从源代码种更方便地获取我们要的数据。
1.服务器渲染
这个最简单,
我们在请求到服务器的时候,服务器直接把数据全部写⼊到html中, 所以我们直接拿到带有数据的html内容。
比如下图,左边是用户页面,右边是源代码(
右击空白页面可以检查网页源代码
),而数据就在源代码中清晰可见,
这种⽹⻚⼀般都相对⽐较容易抓取所需内容。
2.前端JS渲染
这种就稍显麻烦了。
这种机制⼀般是第⼀次请求服务器a返回⼀堆HTML框架结构,然后通过这个框架再次请求到真正保存数据的服务器b, 服务器b返回的数据才是我们需要的数据。
如下图,我们在网页源代码中查不到页面数据,此时我们就要借助浏览器的
调试⼯具(F12)
来获取数据。
今天就将这些,前面提到的内容都会在以后讲到。下一期更新还是会隔一天,计划到9月22号更新,下一期讲requests。