PHP curl 抓取 AJAX 异步请求数据完整指南

竹里
竹里
发布时间:2026-10-15| 6人浏览过
原创

很多网页内容通过 AJAX 技术动态加载,直接抓取 HTML 源码无法获取这些数据。解决这一问题的关键是通过开发者工具找到真实的异步请求地址和参数,然后使用 cURL 模拟提交。

分析与准备

AJAX(Asynchronous JavaScript and XML)本质上是一次独立的 HTTP 请求。要抓取这些内容,我们需要先定位其后台服务地址。通常可以使用 Firebug 或现代浏览器的“网络(Network)”开发者工具来拦截和分析这些请求。

在浏览器中打开包含异步内容的页面,查看请求响应。此时你可能只会看到返回的 JS 代码、XML 数据或 JSON 对象,而不是渲染后的完整页面结构。这就是我们需要解析的目标数据。

确定接口的请求方法(通常是 GET 或 POST)、URL 以及所需的全部参数(如 callCount、sessionid、业务 ID 等)。如果该接口依赖于登录状态,还需要记录相应的 Session Cookie。

操作顺序

第1步:获取并保存会话 Cookie

由于很多异步接口需要通过 Cookies 验证身份或维持会话,第一步是访问基础页面以获取有效的 Cookie,并将其保存到本地文件中供后续请求使用。

$cookie_file = tempnam('./temp','cookie'); // 创建临时文件存储Cookie
$ch = curl_init();
$url1 = "http://www.cdut.edu.cn/default.html";
curl_setopt($ch,CURLOPT_URL,$url1);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); // 处理gzip压缩
// 设置连接结束后保存cookie信息的文件
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$content=curl_exec($ch);
curl_close($ch); 

第2步:构造并发送异步 POST 请求

根据上一步分析出的参数,拼接 POST 数据字符串。确保传入正确的业务参数(如文章分类ID、页数等),并利用之前生成的 Cookie 文件进行身份认证。

$ch3 = curl_init();
// AJAX 异步请求的真实后端接口
$url3 = "http://www.cdut.edu.cn/xww/dwr/call/plaincall/portalAjax.getNewsXml.dwr";
// 完整的POST参数字符串(注意&需转为 & 或 %26,视编码方式而定)
$curlPost = "callCount=1&page=/xww/type/1000020118.html&httpSessionId=...&scriptSessionId=...&c0-scriptName=portalAjax&c0-methodName=getNewsXml&c0-param0=string:xxx...";

curl_setopt($ch3,CURLOPT_URL,$url3);
curl_setopt($ch3,CURLOPT_POST,1);
curl_setopt($ch3,CURLOPT_POSTFIELDS,$curlPost);

// 读取之前保存的cookie进行验证
curl_setopt($ch3,CURLOPT_COOKIEFILE,$cookie_file);

// 执行请求
$content1 = curl_exec($ch3);
curl_close($ch3);

结果判断

变量 $content1 中现在应该包含了服务端返回的 XML 或文本数据。你可以进一步使用 PHP 内置的 DOMDocument 或其他解析库来处理这段字符串,将其转换为结构化数据或提取出需要的字段。

简要总结

以上就是利用 PHP cURL 进行 AJAX 异步内容抓取的详细内容,更多关于 PHP 高级网络编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。