动态网页使用JavaScript时,很多内容不会显示在HTML源代码中,传统网页更新内容必须重载整个网页。Ajax加载的动态网页常用爬取技术为,通过浏览器审查元素解析真实网页地址和使用selenium模拟浏览器。
一、Ajax
Ajax指异步的JavaScript和xml,利用JavaScript保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页的技术。
Ajax示例 W3School TIY Editor
1. 基本原理
发送请求:新建了XMLHttpRequest对象,调用onreadystatechange属性设置监听,调用open
()和send()向服务器发送请求。
解析内容:得到响应后触发onreadystatechange对应的方法,利用XMLHttpRequest的responseText获得响应内容,再使用JavaScript进一步处理返回的HTML或Json。
渲染网页:调用JavaScript更改(更新删除等)某个元素内的源代码,称为DOM操作。
2. Ajax分析
(1)查看请求
Ajax的特殊请求类型为xhr。
打开网页开发者工具,网络,刷新页面,找到一个Ajax请求。
查看Headers。
Preview中是响应内容。
Response中是真实的返回数据。
(2)过滤请求
3. Ajax结果提取
(1)分析请求
请求的参数为url。
(2)分析响应
4. 解析真实地址
检查->网络,刷新页面进行抓包。数据一般以JSON格式获取,找到真实地址。根据真实地址发送请求获取数据。
二、selenium爬取动态网页
selenium用于web应用程序测试,模拟浏览器完成爬取,可做出单击、输入、打开、验证等操作。
selenium打开后显示一个带小机器人图标的浏览器。