pholcus
Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/csv/excel等)、有大量Demo共享;同时她还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。
爬虫原理
框架特点
-
Pholcus(幽灵蛛)以高效率,高灵活性和人性化设计为开发的指导**;
-
支持单机、服务端、客户端三种运行模式,即支持分布式布局,适用于各种业务需要;
-
支持Web、GUI、命令行三种操作界面,适用于各种运行环境;
-
支持mysql/mongodb/csv/excel等多种输出方式,且可以轻松添加更多输出方式;
-
采用surfer高并发下载器,支持 GET/POST/HEAD 方法及 http/https 协议,同时支持固定UserAgent自动保存cookie与随机大量UserAgent禁用cookie两种模式,高度模拟浏览器行为,可实现模拟登录等功能;
-
服务器/客户端模式采用teleport高并发socketAPI框架,全双工长连接通信,内部数据传输格式为JSON;
-
对采集规则进行了精心设计,规则灵活简单、高度封装,用于通用方法集与大量Demo,让你轻松添加规则;
-
支持横纵向两种抓取模式,并且支持任务暂停、取消等操作。
下载安装
-
下载第三方依赖包源码,放至 GOPATH/src 目录下 [点击下载 ZIP]
-
下载保持更新状态的源码,命令行如下
go get github.com/henrylee2cn/pholcus
备注:Pholcus公开维护的spider规则库地址 https://github.com/pholcus/spider_lib
创建项目
package main
import (
"github.com/henrylee2cn/pholcus/config"
"github.com/henrylee2cn/pholcus/exec"
"github.com/henrylee2cn/pholcus/logs"
_ "github.com/pholcus/spider_lib" // 此为公开维护的spider规则库
// _ "github.com/pholcus/spider_lib_pte" // 同样你也可以自由添加自己的规则库
)
func main() {
// 允许日志打印行号
logs.ShowLineNum()
// 初始化配置,不调用则为默认值
SetConf()
// 开始运行,参数:"web"/"gui"/"cmd",默认为web版
// 其中gui版仅支持Windows系统
exec.Run("web")
}
// 自定义相关配置,将覆盖默认值
func SetConf() {
//mongodb服务器地址
config.MGO_OUTPUT.HOST = "127.0.0.1:27017"
// mongodb数据库
config.MGO_OUTPUT.DB = "pholcus"
// mongodb输出时的内容分类
// key:蜘蛛规则清单
// value:数据库名
config.MGO_OUTPUT.DB_CLASS = map[string]string{
"百度RSS新闻": "1_1",
}
// mongodb输出时非默认数据库时以当前时间为集合名
// h: 精确到小时 (格式 2015-08-28-09)
// d: 精确到天 (格式 2015-08-28)
config.MGO_OUTPUT.COLLECTION_FMT = "d"
//mysql连接池容量
config.MGO_OUTPUT.MAX_CONNS = 1024
//mysql服务器地址
config.MYSQL_OUTPUT.HOST = "127.0.0.1:3306"
//msyql数据库
config.MYSQL_OUTPUT.DB = "pholcus"
//mysql用户
config.MYSQL_OUTPUT.USER = "root"
//mysql密码
config.MYSQL_OUTPUT.PASSWORD = ""
//mysql连接池容量
config.MYSQL_OUTPUT.MAX_CONNS = 1024
// Surfer-Phantom下载器配置
config.SURFER_PHANTOM.FULL_APP_NAME = "phantomjs" //phantomjs软件相对路径与名称
}
Web版编译运行
go install (可选参数: -ip 0.0.0.0 -port 9090)
或者
go build (可选参数: -ip 0.0.0.0 -port 9090)
(注意:将 src/github.com/henrylee2cn/pholcus/web 文件夹拷贝至当前项目目录下,其中的go文件可删除)
GUI版编译运行
go install -ldflags="-H windowsgui"
或者
go build -ldflags="-H windowsgui"
(下图为GUI选择模式界面图例)
Cmd版编译运行
编译命令: go install pholcus-cmd.go 或者 go build pholcus-cmd.go
查看命令参数: pholcus-cmd.exe -h
执行爬虫命令: pholcus-cmd.exe -spider=1,3 -output=csv -go=500 -docker=5000 -pase=1000,3000 -kw=pholcus,golang -page=100
第三方依赖包
go get github.com/pholcus/spider_lib
go get github.com/henrylee2cn/surfer
go get github.com/henrylee2cn/teleport
go get github.com/henrylee2cn/beelogs
go get github.com/henrylee2cn/mahonia
go get github.com/henrylee2cn/websocket.google
go get github.com/PuerkitoBio/goquery
go get github.com/andybalholm/cascadia
go get github.com/lxn/walk
go get github.com/lxn/win
go get github.com/tealeg/xlsx
go get github.com/go-sql-driver/mysql
go get gopkg.in/mgo.v2
<以下需翻墙下载>
go get golang.org/x/net/html
go get golang.org/x/text/encoding
go get golang.org/x/text/transform
(在此感谢以上开源项目的支持!)
开源协议
Pholcus(幽灵蛛)项目采用商业应用友好的Apache License v2.发布