• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

爬虫简介 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
0
下一篇:docker 版本号说明

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。