基于浏览器的分布式web爬行
brozzler的Python项目详细描述
brozzler
“browser”“crawler”=“brozzler”
brozzler是一个使用真正浏览器(chrome)的分布式网络爬虫程序。 或者chromium)来获取页面和嵌入的url并提取链接。它雇佣 youtube-dl增强媒体捕获 功能和rethinkdb到 管理爬网状态。
brozzler被设计为与warcprox一起用于web归档。
要求
- python 3.4或更高版本
- 重新考虑数据库部署
- Chromium或Google Chrome>;=64版
注意:浏览器需要图形环境才能运行。运行Brozzler时 在服务器上,这可能需要部署一些额外的基础设施, 通常是x11。xvnc4和xvfb是适合在 服务器,因为它们不向物理屏幕显示任何内容。brozzler存储库中的vagrant configuration有一个示例设置 使用xvnc4。(上次测试时,xvfb上的chromium不支持屏幕截图, 因此,此时首选XVNC4。)
开始
开始使用Brozzler进行Web存档的最简单方法是 brozzler-easy。机枪手,机枪手,机枪手 Wayback和Brozzler仪表板,配置为在单个 过程。
Mac说明:
# 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将开始存档您的站点。结果将是 立即可在pywb中的http://localhost:8880/brozzler/播放。
brozzler easy演示了完整的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/
[*] | A note about ^{tt2}$: this option tells brozzler to look for a healthy warcprox instance in the rethinkdb service registry. For this to work you need to have at least one instance of warcprox running, with the ^{tt3}$ option pointing to the same rethinkdb services table that brozzler is using. Using ^{tt2}$ is recommended for clustered deployments. |
作业配置
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 Wayback
brozzler附带了一个定制的pywb版本,它支持使用RethinkDB “captures”表(由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
无头铬(实验性)
众所周知,brozzler在无头模式下名义上与铬/铬一起工作,但是 这还没有经过广泛的测试。
许可证
版权所有2015-2018 Internet Archive
根据apache许可证2.0版(以下简称“许可证”)授权;您可以 除非符合许可证,否则不要使用此软件。你可以 在
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。