1.1 基于Socket通信编写爬虫
1.2 基于HttpURLConnection类编写爬虫
1.3 基于apache的HttpClient包编写爬虫
1.4 基于phantomjs之类的无头(无界面)浏览器
1.5 基于Selenium之类的有头(有界面)浏览器
二、系统设计
2.1 模块划分:
任务管理的UI交互层、
任务调度层、
网络爬取层、
数据解析层、
数据持久化层
2.2 项目划分
数据采集/下载项目(download)
数据解析项目(parser)
数据持久化(persistence)
通用或垂直采集器(controler/manager)
公共依赖client对外服务
公共依赖common服务其它项目
2.3 重难点 :
按设计来实现
乱码解决、
多线程设计、
爬取的各参数的灵活配置、
反爬代理
三、具体技术点
3.1 http协议相关+java se+httpclient+jsoup(httpparser)+database
3.2 http协议相关,指在爬虫过程中对最为主流的http网址的内容的抓包及参数分析,最为主要的参数部分要对http协议相对了解些,包括Url、HttpHeader、Get、Post、Cookie等4项。Url即为共认的Url网址。HttpHeader,指在http请求过程中,协带的各项header信息,如refer,host,encoding,返回的type等。 Get请求,即为在浏览器中看到的网址后边的参数部分,Post请求,即为数据提交的时候对数据保护和扩大数据提交量的一种数据的提交方式。Cookie,即为小甜饼,是服务器端向客户端写的信息,往往是为了提高客户端的使用体验而添加的,更关键的是要保持住客户端与服务器的连接状态。
3.3 Java Se:java基础,包括:高级对象使用,IO,多线程,网络通信,偶尔涉及到GUI编程。
3.4 HttpClient: 是开源的Apache的著名的java net编程第三方包,其实是对Java Net包的封状,目前已为4.3版本,更为精简易用,可以免去很多Http操作的细节操作,其核心为HttpUrlConnection的封装。
3.5 Jsoup:网页解析,是近来较受欢迎的html解析器,比htmlparser更简单、易用、高效,故目前应用jsoup的人员急速上升,且与老牌的htmlparser对比优势明显,尤其是其选择器的应用,太过强大,很有吸引用,使人不得选择jsoup去解析httpclient得到的网页内容。
3.6 database操作:关系型的mysql,sqlserver。非关系型:mongodb,ssdb,hbase,elasticsearch。
四、总结
做爬虫系统和做别的系统很像,系统设计很关键,
即层之间的衔接,要尽量高内聚、低耦合。