爬虫简介 curl式 和 Headless浏览器实现页面解析
传统CURL式爬虫
curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本
Shell: curl https://www.segmentfault.com
传统CURL式爬虫过程
模拟浏览器请求-
编程语言内置对象或方法模拟设置cookie,User-Agent,Request Method,Query String甚至跟踪redirect,向服务器发送一个请求
接收、处理数据流-
对服务器响应数据流字符进行解析,或模拟HTML格式转换为程序相应数据类型方便操作
保存数据-
对数据分析后本地持久化存储(CSV,txt,jpg/png,.json文件,DB)
各语言的CURL实现:
PHP:curl_init();
Java:URLConnection;
Python:requests模块;
Node:http模块;
...
CURL式爬虫缺点:
无法获取由Js脚本动态生成的网页信息-
当今Web技术的大环境下,为了网站的性能、可扩展性、用户友好等方向,几乎所有的Web页面都在使用浏览器脚本动态生成内容,所以如果没有脚本执行环境就没有数据。
Headless浏览器实现页面解析
什么是Headless browser?
无头浏览器类似于在流行的Web浏览器的环境中提供对网页的自动控制,但通过命令行接口或使用网络通信来执行。它们特别适用于测试网页,因为它们能够以浏览器相同的方式呈现和解释HTML,包括页面布局、颜色、字体选择和JavaScript和Ajax的执行等样式元素,当使用其它测试方法时,这些元素通常是不可用的
简单来说就是用浏览器来对目标URL进行HTML解析,CSS渲染,Js执行,借由API甚至可以模拟用户行为(鼠标点击,键盘输入),但不提供UI渲染。通过以上我们可以知道Headless browser就是我们想要的爬虫方式了
常用Headless browser
Phantomjs(项目暂封存,慎用);
Chrome;
FireFox;
共 0 条评论