Python网络爬虫案例实战:动态网页爬取:什么是Ajax
Ajax(Asynchronous JavaScript and XML)异步JavaScript和XML,即异步的JavaScript 和XML。它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。
对于传统的网页,如果想更新其内容,那么必须要刷新整个页面,但有了Ajax,便可以在页面不被全部刷新的情况下更新其内容。在这个过程中,页面实际上是在后台与服务器进行了数据交互,在获取到数据之后,再利用JavaScript改变网页,这样网页内容就会更新了。
可以到 W3School上体验几个示例来感受一下:http://www.w3school.com.cn/ajax/ajax_example.asp。
1.实例引入
为了帮助理解Ajax的工作原理,创建了一个小型的Ajax应用程序。其实现效果:运行程序,生成初始界面如图4-3(a)所示,当单击界面中的“通过AJAX改变内容”按钮时,即切换界面,如图4-3(b)所示,再次单击该按钮,即返回如图4-3(a)的界面。
下面对该Ajax实例进行解释。
上面的Ajax应用程序包含一个div和一个按钮。div部分用于显示来自服务器的信息。当按钮被单击时,它负责调用名为loadXMLDoc()的函数,代码为:
< html>
< body >
<div id= "myDiv">< h3 > Let AJAX change this text </h3 ></div>
< button type = "button" onclick = "loadXMLDoc()"> Change Content </button >
</body >
</html>
接下来,在页面的head 部分添加一个
< head >
< script type = "text/javascript">
function loadXMLDoc()
{
... script goes here ...
}
</script >
</head >
2.基本原理
初步了解了Ajax之后,下面再来详细了解它的基本原理。发送Ajax请求到网页更新的这个过程可以简单分为3步:发送请求、解析内容、渲染网页。下面分别来详细介绍这几个过程。
1)发送请求
我们知道,JavaScript可以实现页面的各种交互功能,Ajax也不例外,它也是由JavaScript实现的,实际上执行了如下代码:
var xmlhttp:
if(window. XMLHttpRequest){
//code for IE7 + , Firefox, Chorme, Opera, Safari
xmlhttp = new HMLHttpRequest();
} else{
//code for IE6, IE5
xmlhttp = new Activexobject("Microsoft. XMLHTTP");
}
xmlhttp. onreadystatechange = function(){
if(xmlhttp. readyState == 4&& xmlhttp. status == 200){
document. getElementById("myDiv"). innerHTML = xmlhttp. responseText;
}
}
xmlhttp. open("POST",