Skip to main content

使用浏览器进行分布式网络爬取

项目描述

https://api.travis-ci.org/internetarchive/brozzler.svg?branch=master

标识浏览器

“浏览器” | “爬虫” = “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.png

有关配置选项,请参阅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/

Brozzler-Wayback.png

无头 Chrome(实验性)

众所周知,Brozzler 名义上可以在无头模式下与 Chrome/Chromium 一起使用,但这还没有经过广泛的测试。

执照

版权所有 2015-2018 互联网档案馆

根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可,否则您不得使用此软件。您可以在以下网址获取许可证的副本

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可分发的软件将按“原样”分发,没有任何明示或暗示的保证或条件。有关许可下的特定语言管理权限和限制,请参阅许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

brozzler-1.5.18.tar.gz (74.9 kB 查看哈希

已上传 source