使用浏览器进行分布式网络爬取
项目描述
浏览器
“浏览器” | “爬虫” = “brozzler”
Brozzler 是一个分布式网络爬虫(爬虫),它使用真实的浏览器(Chrome 或 Chromium)来获取页面和嵌入的 URL 并提取链接。它使用 youtube-dl来增强媒体捕获功能并使用 rethinkdb来管理爬网状态。
Brozzler 旨在与 warcprox 结合使用以进行 Web 归档。
要求
Python 3.5 或更高版本
RethinkDB 部署
Chromium 或 Google Chrome >= 版本 64
注意:浏览器需要图形环境才能运行。当 brozzler 在服务器上运行时,这可能需要部署一些额外的基础架构,通常是 X11。Xvnc4 和 Xvfb 是适合在服务器上使用的 X11 变体,因为它们不会在物理屏幕上显示任何内容。brozzler 存储库中的vagrant 配置有一个使用 Xvnc4 的示例设置。(上次测试时,Xvfb 上的 chromium 不支持截图,所以此时首选 Xvnc4。)
入门
开始使用 brozzler 进行 Web 归档的最简单方法是使用 brozzler-easy。Brozzler-easy 运行 brozzler-worker、warcprox、brozzler wayback 和 brozzler-dashboard,配置为在单个进程中相互协作。
麦克指令:
# install and start rethinkdb brew install rethinkdb # no brew? try rethinkdb's installer: https://www.rethinkdb.com/docs/install/osx/ rethinkdb &>>rethinkdb.log & # install brozzler with special dependencies pywb and warcprox pip install brozzler[easy] # in a virtualenv if desired # queue a site to crawl brozzler-new-site http://example.com/ # or a job brozzler-new-job job1.yml # start brozzler-easy brozzler-easy
此时 brozzler-easy 将开始归档您的网站。结果将立即在http://localhost:8880/brozzler/的 pywb 中播放。
Brozzler-easy 演示了完整的 brozzler 归档爬取工作流程,但没有利用 brozzler 的分布式特性。
安装使用
仅安装 brozzler:
pip install brozzler # in a virtualenv if desired
启动一个或多个工人:[ * ]
brozzler-worker --warcprox-auto
提交职位:
brozzler-new-job myjob.yaml
提交与工作无关的网站:
brozzler-new-site --time-limit=600 http://example.com/
作业配置
Brozzler 作业是使用 YAML 文件定义的。选项可以在顶层或单个种子上指定。必须至少指定一个种子 URL,但其他所有内容都是可选的。有关详细信息,请参阅job-conf.rst。
id: myjob
time_limit: 60 # seconds
proxy: 127.0.0.1:8000 # point at warcprox for archiving
ignore_robots: false
warcprox_meta: null
metadata: {}
seeds:
- url: http://one.example.org/
- url: http://two.example.org/
time_limit: 30
- url: http://three.example.org/
time_limit: 10
ignore_robots: true
scope:
surt: http://(org,example,
Brozzler 仪表板
Brozzler 带有一个用于查看爬网作业状态的基本 Web 应用程序。要安装具有运行此应用程序所需的依赖项的 brozzler,请运行
pip install brozzler[dashboard]
要启动应用程序,请运行
brozzler-dashboard
此时可以通过http://localhost:8000/访问 Brozzler 仪表板。
有关配置选项,请参阅brozzler-dashboard --help。
Brozzler 回程
Brozzler 带有一个定制版本的pywb,它支持使用 rethinkdb “捕获”表(由 warcprox 填充)作为其索引。
要使用,首先安装依赖项。
pip install brozzler[easy]
编写配置文件pywb.yml。
# 'archive_paths' should point to the output directory of warcprox
archive_paths: warcs/ # pywb will fail without a trailing slash
collections:
brozzler:
index_paths: !!python/object:brozzler.pywb.RethinkCDXSource
db: brozzler
table: captures
servers:
- localhost
enable_auto_colls: false
enable_cdx_api: true
framed_replay: true
port: 8880
像这样运行 pywb:
$ PYWB_CONFIG_FILE=pywb.yml brozzler-wayback
然后浏览http://localhost:8880/brozzler/。
无头 Chrome(实验性)
众所周知,Brozzler 名义上可以在无头模式下与 Chrome/Chromium 一起使用,但这还没有经过广泛的测试。
执照
版权所有 2015-2018 互联网档案馆
根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可,否则您不得使用此软件。您可以在以下网址获取许可证的副本
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可分发的软件将按“原样”分发,没有任何明示或暗示的保证或条件。有关许可下的特定语言管理权限和限制,请参阅许可。