[TOC]
Ajax数据爬取
Ajax介绍
Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML。它不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。
XMLHttpRequest对象
XMLHttpRequest对象是 AJAX 的基础,用于在后台与服务器交换数据,可以在不重新加载整个网页的情况下,对网页的某部分进行更新.
1.创建XMLHttpRequest对象:
```
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();// 创建 XMLHttpRequest 对象的语法
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");// IE5 和 IE6使用 ActiveX 对象
}
```
2.发送请求:
使用 XMLHttpRequest 对象的 open() 和 send() 方法将请求发送到服务器
open(method,url,async):规定请求的类型、URL 以及是否异步处理请求。
- method:请求的类型;GET 或 POST
- url:文件在服务器上的位置
- async:true(异步)或 false(同步),ajax必须为true
send(string):将请求发送到服务器。
- string:仅用于 POST 请求
3.响应:
- XMLHttpRequest 对象的 responseText(获得字符串形式的响应数据)或 responseXML(获得 XML 形式的响应数据)属性获得来自服务器的响应
4.onreadystatechange 事件:
当请求被发送到服务器时,每当 readyState 改变时,就会触发 onreadystatechange 事件
解析函数:当使用 async=true 时,当响应处于 onreadystatechange 事件中的就绪状态时(readyState 等于 4 且状态为 200 )执行的函数:
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","test1.txt",true); xmlhttp.send();
onreadystatechange:存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState:存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
- 0: 请求未初始化
- 1: 服务器连接已建立
- 2: 请求已接收
- 3: 请求处理中
- 4: 请求已完成,且响应已就绪
status
- 200: “OK”
- 404: 未找到页面
Ajax分析方法
Ajax有其特殊的请求类型,它叫作xhr
Request Headers中有一个信息为X-Requested-With:XMLHttpRequest,这就标记了此请求是Ajax请求
Ajax一般为json格式