百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
P

pholcus

> 开发工具
开源

Pholcus 是一款分布式高并发爬虫软件,采用纯 Golang 编写。

7.6K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Pholcus 是一款分布式高并发爬虫软件,采用纯 Golang 编写。

--- ## 免责声明 > **本软件仅用于学术研究,使用者需遵守其所在地的相关法律法规,请勿用于非法用途!** > > 如在中国大陆频频爆出爬虫开发者涉诉与违规的 [新闻](https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)。 > > **郑重声明:因违法违规使用造成的一切后果,使用者自行承担!** --- ## 核心特性
**运行模式** - 单机模式 — 开箱即用 - 服务端模式 — 分发任务 - 客户端模式 — 接收并执行任务 **操作界面** - Web UI — 跨平台,浏览器操作 - GUI — Windows 原生界面 - Cmd — 命令行批量调度
**数据输出** - MySQL / MongoDB - Kafka / Beanstalkd - CSV / Excel - 原文件下载 **爬虫规则** - 静态规则(Go)— 高性能,深度定制 - 动态规则(JS/XML)— 热加载,无需编译 - 30+ 内置示例规则
**更多亮点:** - 三引擎下载器 [surfer](app/downloader/surfer):Surf(高并发 HTTP)/ PhantomJS / **Chrome**(Chromium 无头浏览器,自动执行 JS) - 智能 Cookie 管理:固定 UserAgent 自动保存 cookie,或随机 UserAgent 禁用 cookie - 模拟登录、自定义 Header、POST 表单提交 - 代理 IP 池,可按频率自动更换 - 随机停歇机制,模拟人工行为 - 采集量与并发协程数可控 - 请求自动去重 + 失败请求自动重试 - 成功记录持久化,支持断点续爬 - 分布式通信全双工 Socket 框架 --- ## 赞助鸣谢 结合 Pholcus 的高并发、分布式采集能力,[IPWO](https://www.ipwo.net/?ref=githubpholcus) 住宅代理可为不同采集任务提供相应的网络环境支持,适用于需要跨地区访问和多网络环境测试的数据采集任务。
覆盖全球195+地区动静态IP资源,http/https/socks5 协议,支持免费测试入口。90折扣码:0204 [https://www.ipwo.net/?ref=githubpholcus](https://www.ipwo.net/?ref=githubpholcus) --- ## 架构设计 模块结构
项目架构
分布式架构
### 目录结构 ``` … ``` --- ## 快速开始 ### 环境要求 - Go 1.18+(推荐 1.22+) ### 获取源码 ```bash git clone https://github.com/andeya/pholcus.git cd pholcus ``` ### 编写入口 创建 `main.go`(或参考 `sample/main.go`): ```go package main import ( "github.com/andeya/pholcus/exec" _ "github.com/andeya/pholcus/sample/static_rules" // 内置规则库 // _ "yourproject/rules" // 自定义规则库 ) func main() { // 启动界面:web / gui / cmd // 可通过 -a_ui 运行参数覆盖 exec.DefaultRun("web") } ``` ### 编译运行 ```bash # 编译(非 Windows 平台自动排除 GUI 包) go build -o pholcus ./sample/ # 查看所有可选参数 ./pholcus -h ``` Windows 下隐藏 cmd 窗口的编译方式: ```bash go build -ldflags="-H=windowsgui -linkmode=internal" -o pholcus.exe ./sample/ ``` ### 命令行参数一览 ```bash ./pholcus -h ``` --- ## 操作界面 ### Web UI 启动后访问 `http://localhost:2015`,在浏览器中即可完成蜘蛛选择、参数配置、任务启停等全部操作。 ### GUI(仅 Windows) 原生桌面客户端,功能与 Web 版一致。 ### Cmd 命令行 适用于服务器部署或 cron 定时任务场景。 ```bash pholcus -_ui=cmd -a_mode=0 -c_spider=3,8 -a_outtype=csv -a_thread=20 \ -a_batchcap=5000 -a_pause=300 -a_proxyminute=0 \ -a_keyins="" -a_limit=10 -a_success=true -a_failure=true ``` --- ## 规则编写 Pholcus 支持 **静态规则(Go)** 和 **动态规则(JS/XML)** 两种方式。 ### 静态规则(Go) 随软件一同编译,性能最优,适合重量级采集项目。在 `sample/static_rules/` 下新建 Go 文件即可: ``` … ``` > 更多示例见 [`sample/static_rules/`](sample/static_rules/),涵盖百度、京东、淘宝、知乎等 30+ 网站。 ### 动态规则(JS/XML) 无需编译即可热加载,适合轻量级采集。将 `.pholcus.xml` 文件放入 `dyn_rules/` 目录: ``` … ``` > 同时兼容 `.pholcus.html` 旧格式。` ``` ### Chrome 引擎说明 Chrome 引擎依赖本机安装的 Chromium / Google Chrome 浏览器,通过 [chromedp](https://github.com/chromedp/chromedp) 驱动。 **适用场景:** - 目标网站有 JS 渲染的内容(SPA / CSR 页面) - 目标网站有安全验证(如百度安全验证)需要浏览器执行 JS 后自动跳转 - 需要模拟真实浏览器环境绕过反爬检测 **环境要求:** - 本机需安装 Chrome / Chromium 浏览器 - macOS: `brew install --cask google-chrome` 或 `brew install chromium` - Linux: `apt install chromium-browser` 或 `yum install chromium` - Windows: 安装 Google Chrome 即可 **注意事项:** - Chrome 引擎每次请求会启动独立的无头浏览器实例,资源消耗高于 Surf - 建议仅在 Surf 引擎无法获取内容时使用 Chrome - Chrome 引擎内置了反自动化检测(隐藏 `navigator.webdriver`、禁用自动化标志等) --- ## 配置说明 ### 运行时目录 ``` ├── pholcus 可执行文件 ├── dyn_rules/ 动态规则目录(可在 config.ini 中配置) │ └── xxx.pholcus.xml 动态规则文件 └── pholcus_pkg/ 运行时文件目录 ├── config.ini 配置文件 ├── proxy.lib 代理 IP 列表 ├── phantomjs PhantomJS 程序 ├── text_out/ 文本输出目录 ├── file_out/ 文件输出目录 ├── logs/ 日志目录 ├── history/ 历史记录目录 └── cache/ 临时缓存目录 ``` ### 代理 IP 在 `pholcus_pkg/proxy.lib` 文件中逐行写入代理地址: ``` http://183.141.168.95:3128 https://60.13.146.92:8088 http://59.59.4.22:8090 ``` 通过界面选择"代理 IP 更换频率"或命令行参数 `-a_proxyminute` 启用。 > **注意:** macOS 下使用代理 IP 功能需要 root 权限,否则无法通过 `ping` 检测可用代理。 --- ## 内置爬虫规则 | 分类 | 规则名称 | | -------- | --------------------------------------------------------- | | 搜索引擎 | 百度搜索、百度新闻、谷歌搜索、京东搜索、淘宝搜索 | | 电商平台 | 京东、淘宝、考拉海购、蜜芽宝贝、顺丰海淘、Holland&Barrett | | 新闻资讯 | 中国新闻网、网易新闻、人民网 | | 社交问答 | 知乎日报、知乎编辑推荐、悟空问答、微博粉丝 | | 房产汽车 | 房天下二手房、汽车之家 | | 数码科技 | ZOL 手机、ZOL 电脑、ZOL 平板、乐蛙 | | 分类信息 | 赶集公司、全国区号 | | 社交工具 | QQ 头像 | | 学术期刊 | IJGUC | | 其他 | 阿里巴巴、技版、文件下载测试 | --- ## 常见问题 请求队列中重复的 URL 会自动去重吗? 默认自动去重。如需允许重复请求,设置 `Request.Reloadable = true`。 框架能否判断页面内容是否更新? 框架不内置页面变更检测,但可在规则中自定义实现。 请求成功的判定标准是什么? 以服务器是否返回响应流为准,而非 HTTP 状态码。即 404 页面也算"请求成功"。 请求失败后如何重试? 每个 URL 尝试下载指定次数后,若仍失败则进入 defer 队列。当前任务正常结束后自动重试。再次失败则保存至失败历史记录。下次执行同一规则时,可选择继承历史失败记录进行自动重试。 --- ## 参与贡献 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支:`git checkout -b feature/your-feature` 3. 提交更改:`git commit -m 'Add your feature'` 4. 推送分支:`git push origin feature/your-feature` 5. 提交 Pull Request --- ## 开源协议 本项目基于 [Apache License 2.0](LICENSE) 开源。 ---

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Gocrowlerspider

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类开发工具
定价开源

> 相关工具

V
VS Code
流行的开源代码编辑器
G
Git
分布式版本控制系统
V
Vite
下一代前端构建工具