转载请标明出处:
http://blog.csdn.net/jozzss/article/details/47974209;
本文出自:【jozzss的博客】
一.概述
1.1 等同于浏览器访问网页的原理
(1)真人行为驱动
(2)浏览器自动执行人为的动作,即将动作自动程序化。
1.2 网络爬虫就是将浏览器访问网页的过程,再次抽像成程序。
(1)真人行为驱动
(2)浏览器自动执行人为的动作,即将动作自动程序化。
1.2 网络爬虫就是将浏览器访问网页的过程,再次抽像成程序。
二.实现
2.1 基于Socket通信编写爬虫最底层的实现形式,也是执行最高效,但开发效率较低的一种方式。
socket并不是什么通信协义,只是为了方便tcp/ip层的上层访问tip/ip层而做一层封装。
相当于http方问socket,而后socket转化为tcp/ip包。
2.2 基于HttpURLConnection类编写爬虫
Java se的net包中的核心类,主要用于http的相关操作。
2.3 基于apache的HttpClient包编写爬虫
核心也是基于java se的net包扩展而来,专为java的网络通信编程而开发的第三方包,也是apahce。
2.4 基于phantomjs之类的无头(无界面)浏览器
(1)它是浏览器核心,并非浏览器。换言之,它是没有界面UI的浏览器。无头,即无界面。
(2)它提供的js api,故它可以方便直接的被各种程序语言调用。
2.5 基于Selenium或是WebDriver之类的有头(有界面)浏览器
(1)它能直接操作本地的浏览器,与真人操作不同的是,它的操作都是程序触发,省去了人为操作的步骤。
三.系统设计
提交任务的UI接口层、任务调度层、网络爬取层、数据解析层、数据持久化层
具体技术点
http协议相关+java se+httpclient+jsoup(httpparser)+database
http协议相关,指在爬虫过程中对最为主流的http网址的内容的抓包及参数分析,最为主要的参数部分要对http协议相对了解些,包括Url、HttpHeader、Get、Post、Cookie等4项。Url即为共认的Url网址。HttpHeader,指在http请求过程中,协带的各项header信息,如refer,host,encoding,返回的type等。 Get请求,即为在浏览器中看到的网址后边的参数部分,Post请求,即为数据提交的时候对数据保护和扩大数据提交量的一种数据的提交方式。Cookie,即为小甜饼,是服务器端向客户端写的信息,往往是为了提高客户端的使用体验而添加的,更关键的是要保持住客户端与服务器的连接状态。
Java Se:java基础,包括:高级对象使用,IO,多线程,网络通信,偶尔涉及到GUI编程。
HttpClient: 是开源的Apache的著名的java net编程第三方包,其实是对Java Net包的封状,目前已为4.3版本,更为精简易用,可以免去很多Http操作的细节操作,其核心为HttpUrlConnection的封装。
Jsoup:网页解析,是近来较受欢迎的html解析器,比htmlparser更简单、易用、高效,故目前应用jsoup的人员急速上升,且与老牌的htmlparser对比优势明显,尤其是其选择器的应用,太过强大,很有吸引用,使人不得选择jsoup去解析httpclient得到的网页内容。
database操作:关系型的mysql,sqlserver。非关系型:mongodb,ssdb,hbase,elasticsearch。
系统设计很关键,即层之间的衔接,要尽量高内聚、低耦合。