不懂Web基本原理怎么能学好爬虫。(四 、爬虫与浏览器的区别)(爬虫、反爬虫、浏览器、动态网页、静态网页 )

前言

前面了解过服务器、Web浏览器的工作原理,我们再对爬虫的运行原理进行分析就十分简单了。


爬虫与浏览器的区别

我们先对爬虫领域静态网页和动态网页的概念进行明确

传统的静态网页动态网页

静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL,然后回车,浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。

动态网页是相对于静态网页而言的。当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后在发送给浏览器(后面的处理就跟静态网页一样了)。很明显,动态网页中的“动态”是指服务器端页面的动态生成,相反,“静态”则指页面是实实在在的、独立的文件。

爬虫领域的静态网页动态网页

静态网页是指网页主体内容的渲染工作在服务器完成,并通过响应正文返回的网页。

动态网页是指主题内容或者全部内容都是需要客户端执行Javascript代码来计算或者渲染的网页。

爬虫与浏览器的主要区别

爬虫并不是一种“所见即所得”的程序,它通过网络请求的方式获取资源。在得到的资源中,最重要的就是相应正文,但是由于Python中没有Javascript解释器和渲染引擎,所以使用编程语言编写的爬虫程序无法渲染页面,它们只能爬取响应正文中的内容,也就是网页源代码中的内容。

网页源代码指的是未经过浏览器解释和Javascript引擎渲染的文本。

如果想要爬取动态网页内中的数据,那么就需要借助Javascript解释器和渲染引擎将渲染后的网页代码以文本的形式传给爬虫。有一些工具已经集成了渲染页面所需的组件,并且开放API允许编程语言操作页面以获取渲染后的页面代码。主要渲染工具如下:

Splash:异步的Javascript渲染服务

Selenium:自动化测试框架

Puppeteer:一个通过DevTools协议控制Chrome的Node.js库

浏览器中Javascript解释器的存在,Javascript可以在浏览器中解释和运行。Javascript可以通过DOM改变网页的显示内容,但HTML代码并不会改变。

当然实际浏览器的更为复杂,具体的可以参考本系列Web浏览器工作原理。

你可能感兴趣的:(不懂Web原理怎么学好爬虫,爬虫,python,开发语言,javascript,前端)