spiderkit
编译步骤:
安装依赖
CentOS: sudo yum -y install gcc gcc-c++ make flex bison gperf ruby / openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel / libpng-devel libjpeg-devel sudo yum install git sudo yum install automake autoconf autogen libtool 自行下载安装maven Ubuntu: sudo apt-get install build-essential g++ flex bison gperf ruby perl / libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev / libpng-dev libjpeg-dev sudo apt-get install git sudo apt-get install automake autoconf autogen libtool sudo apt-get install maven
下载spiderkit
git clone https://git.oschina.net/wangsihong/spiderkit.git
编译
进入 spiderkit/script 目录 cd spiderkit/script ./compile.sh
启动spiderkit
启动spiderkit集群首先要启动一个zookeeper集群 编辑spiderkit.conf, script目录下有一个模板,拷到项目根目录 配置文件: "StaticCoreCount" : 启动的静态内核数(静态内核指关闭js解析的内核) "DynamicCoreCount" : 启动的动态内核数 "GroupName" : 分组名称(客户端的请求要求制定一个分组,分组可以用来表示网络环境,机房或者用来分配请求等) "IsDebug" : 是否以debug启动,log打印debug信息 "ZookeeperHost" : zookeeper 集群host "ExitWorkCount" : 表示内核加载渲染多少页面之后申请重启.解决qwebkit内存泄露问题 "DefaultSocketPort": 服务端口,默认为 21225 "enableProxy" : 是否使用代理 "proxyType" : 代理的类型 "proxyAuthUser" : 用户名 "proxyAuthPass" : 密码 "proxyHost" : 代理IP "proxyPort" : 代理端口 "enableProxyPool" : false/true, 集群可通过zookeeper加载代理池代理 "enableProxyPath" : zookeeper中保存代理信息的代理池所在节点 执行启动脚本: ./spiderkit-start.sh 停止脚本: ./spiderkit-stop.sh
python 客户端
CentOS: sudo yum install python-devel Ubuntu: sudo apt-get install python-dev 安装 easy_install: wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 安装 pyzmq sudo easy_install pyzmq 安装 protobuf python 进入 src/thrid/ 解压并安装 python-gflags-2.0.tar.gz 和 google-apputils-0.4.0.tar.gz 然后进入 script/source/protobuf/python/ 安装 protobuf python sudo python setup.py install 安装 zookeeper python 下载zookeeper python 包 下载地址 https://pypi.python.org/packages/source/z/zkpython/zkpython-0.4.2.tar.gz 安装 spiderkit python 进入 src/python-client sudo python setup.py install python客户端渲染百度的例子: gconfig = caller.GlobalConfig() gconfig.init("10.58.222.103:2181") wk = webkit.WebKit("test") page = wk.getWebPage("http://www.baidu.com/", 30000, 40000) if page is None: # get page failed wk.release() _exit(0) print page.getTitle() page.destroy() wk.release()
java 客户端
java客户端代码在 spiderkit/src/java/src/skit-client 下 java客户端maven引入 : <dependency> <groupId>com.gome</groupId> <artifactId>skit-client</artifactId> <version>0.0.1</version> </dependency> java 客户端渲染百度的例子: String zkhost = "10.58.222.103:2181"; GlobalConfig config = GlobalConfig.getInstance(); config.connect(zkhost); WebKit webkit = new WebKit("test"); WebPage page = webkit.get("http://www.baidu.com/"); if (page == null) # get page failed wk.release() return System.out.println(page.getTitle()); page.destory(); webkit.release();
spiderkit-schedule 爬虫框架
spiderkit schedule 是一个插件式的爬虫框架,插件通过继承spider-plugin中的类,完成一个爬虫的链接提取和数据提取存储的功能,通过框架的调度启动或停止爬虫任务。 相关源码目录: spiderkit/src/java/src/spider-schedule --- spiderkit-schedule spiderkit/src/java/src/spider-plugin --- spider-plugin spider-plugin maven引入 : <dependency> <groupId>com.gome</groupId> <artifactId>spider-plugin</artifactId> <version>0.0.1</version> </dependency> 启动: ./app-start.sh 控制界面: http://your_ip:8089/spiderkit/
flowcrawl 爬虫插件
flowcrawl是spiderkit schedule内置的一个爬虫插件,通过spiderkit schedule的web页面,可以配置按步骤的爬取某网站的垂直爬虫,保存渲染后的页面代码以及页面间的关系。 通过配制提取xpath信息或者编写javascript脚本, 可以提取出想要的信息。