9.1 Ajax 和动态 HTML
对于传统的Web应用,当我们提交一个表单请求给服务器,服务器接收到请求之后,返回一个新的页面给浏览器,这种方式不仅浪费网络带宽,还会极大地影响用户体验,因为原网页和发送请求后获得的新页面两者中大部分的HTML内容是相同的,而且每次用户的交互都需要向服务器发送请求,同时需要对整个网页进行刷新。这种问题的存在催生出了Ajax技术。
Ajax的全称是Asynchronous JavaScript and XML,中文名称定义为异步的JavaScript和XML,是JavaScript异步加载技术、XML以及Dom,还有表现技术XHTML和CSS等技术的组合。使用Ajax技术不必刷新整个页面,只需对页面的局部进行更新,Ajax只取回一些必需的数据,它使用SOAP、XML或者支持JSON的Web Service接口,我们在客户端利用JavaScript处理来自服务器的响应,这样客户端和服务器之间的数据交互就减少了,访问速度和用户体验都得到了提升。
DHTML是Dynamic HTML的简称,就是动态的HTML,是相对传统的静态HTML而言的一种制作网页的概念。所谓动态HTML(Dynamic HTML,简称DHTML),其实并不是一门新的语言,它只是HTML、CSS和客户端脚本的一种集成,即一个页面中包括HTML+CSS+JavaScript(或其他客户端脚本)。DHTML不是一种技术、标准或规范,只是一种将目前已有的网页技术、语言标准整合运用,制作出能实时变换页面元素效果的网页设计概念。比如,当鼠标移至文章段落中,段落能够变成蓝色,或者当你点击一个超链后会自动生成一个下拉式的子超链目录。
如何判断要爬取的网站是动态网站还是静态网站呢?一个比较简单做法,是看看有没有“查看更多”这样的字样,一般有这样的字样差不多是动态网站。当然,这种做法太经验化了,其实更准确的做法是当你使用Requests访问一个网页,返回的Response内容和在浏览器上看的HTML内容不一样时,不要奇怪,这就是用了动态技术,这就是为什么你无法从响应中抽取出有效的数据。
那怎么解决这个问题呢?一般有两种做法:一种是直接从JavaScript中采集加载的数据,另一种方式是直接采集浏览器中已经加载好的数据。接下来,我会一一进行讲解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论