基于浏览器的分布式web爬行

brozzler的Python项目详细描述


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

logobrozzler

“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.png

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

然后浏览http://localhost:8880/brozzler/

Brozzler-Wayback.png

无头铬(实验性)

众所周知,brozzler在无头模式下名义上与铬/铬一起工作,但是 这还没有经过广泛的测试。

许可证

版权所有2015-2018 Internet Archive

根据apache许可证2.0版(以下简称“许可证”)授权;您可以 除非符合许可证,否则不要使用此软件。你可以 在

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

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在reducer中迭代自定义可写组件时出现java问题   属性文件中属性的java命名约定   任务链关闭的java Executor服务   java从Eclipse中的字段生成多个构造函数   java通过继承读取Json   java在不知道密钥的情况下解析json   java camel cxf如何在电子邮件中发送soap请求响应   java程序似乎跳过了if语句的一部分,在移回正确位置之前先移到else语句   测试简单的Java加密/解密inputFileName不存在   java从Jenkins REST API获取所有作业的所有构建的构建细节   java基本包装器和静态“类型”类对象   在WebSphere8.5上部署java代码   java对象相等(对象引用“=”)   java MongoDB整型字段到枚举的转换   每次我重新导入gradle时,IntelliJ都会不断重置Java设置   类型使用键或索引从Java中的数据类型检索值   在Java的列表接口中需要listIterator()和iterator()是什么?