跳转到主要内容

爬取网站,提取文本和元数据,在Solr中索引

项目描述

ftw.crawler

安装

要安装 ftw.crawler,最简单的方法是创建一个包含配置的buildout,使用 zc.recipe.egg 拉取egg,并在 bin/ 目录中创建一个脚本,该脚本以相应的配置作为参数直接启动爬虫。

  • 首先,为爬虫创建一个配置文件。您可以根据 ftw/crawler/tests/assets/basic_config.py 创建配置,将其复制到您的buildout中,并根据需要对其进行修改。

    请确保至少配置 tikasolr URL,使其指向相应服务的正确位置,并调整 sites 列表以满足您的需求。

  • 创建一个使用 zc.recipe.egg 安装 ftw.crawler 的buildout配置。

    crawler.cfg

    [buildout]
    parts +=
        crawler
        crawl-foo-org
    
    [crawler]
    recipe = zc.recipe.egg
    eggs = ftw.crawler
  • 进一步定义一个buildout部分,创建一个 bin/crawl-foo-org 脚本,该脚本将使用绝对路径调用 bin/crawl foo_org_config.py(以便更容易从cron作业中使用)

    [crawl-foo-org]
    recipe = collective.recipe.scriptgen
    cmd = ${buildout:bin-directory}/crawl
    arguments =
        ${buildout:directory}/foo_org_config.py
        --tika http://127.0.0.1:9998/
        --solr http://127.0.0.1:8983/solr

    (--tika--solr 命令行参数是可选的,它们也可以在配置文件中设置。如果给定,命令行参数将优先于配置文件中的任何参数。)

  • 添加一个buildout配置,下载并配置一个Tika JAXRS服务器

    tika-server.cfg

    [buildout]
    parts +=
        supervisor
        tika-server-download
        tika-server
    
    [supervisor]
    recipe = collective.recipe.supervisor
    plugins =
          superlance
    port = 8091
    user = supervisor
    password = admin
    programs =
        10 tika-server (stopasgroup=true) ${buildout:bin-directory}/tika-server true your_os_user
    
    [tika-server-download]
    recipe = hexagonit.recipe.download
    url = http://repo1.maven.org/maven2/org/apache/tika/tika-server/1.5/tika-server-1.5.jar
    md5sum = 0f70548f233ead7c299bf7bc73bfec26
    download-only = true
    filename = tika-server.jar
    
    [tika-server]
    port = 9998
    recipe = collective.recipe.scriptgen
    cmd = java
    arguments = -jar ${tika-server-download:destination}/${tika-server-download:filename} --port ${:port}

    根据需要修改 your_os_user 和管理器和Tika端口。

  • 最后,添加 bootstrap.py 并创建 buildout.cfg,将所有这些内容组合在一起

    buildout.cfg

    [buildout]
    extensions = mr.developer
    
    extends =
        tika-server.cfg
        crawler.cfg
  • 启动并运行buildout

    python bootstrap.py
    bin/buildout

运行爬虫

如果您使用上述buildout创建了bin/crawl-foo-org脚本,运行爬虫就这些了

  • 确保Tika和Solr正在运行

  • 运行bin/crawl-foo-org (使用相对路径或绝对路径,工作目录不重要,因此可以从cron作业中轻松调用)

直接运行bin/crawl

bin/crawl-foo-org仅仅是一个小的包装器,它调用由ftw.crawler的setuptoolsconsole_script入口点生成的bin/crawl脚本,将配置文件的绝对路径作为唯一的参数。任何其他传递给bin/crawl-foo-org脚本的参数都将转发到bin/crawl

因此,运行bin/crawl-foo-org [args]等同于bin/crawl foo_org_config.py [args]

在站点配置中提供已知的站点地图URL

如果您知道站点地图URL,可以静态配置一个或多个站点地图URL

Site('http://example.org/foo/',
     sitemap_urls=['http://example.org/foo/the_sitemap.xml'])

配置清理的站点ID

为了使清理工作顺利,建议配置爬虫站点ID。请确保每个Solr核心的站点ID都是唯一的!将要清理的候选文档将通过此爬虫站点ID进行识别。

Site('http://example.org/',
     crawler_site_id='example.org-news')

请注意,您的Solr核心必须提供一个字符串字段crawler_site_id

仅索引特定URL

如果您只想索引特定URL,请将此URL作为bin/crawl-foo-org的第一个参数传递。然后爬虫将只抓取和索引该特定URL。

Slack-通知

ftw.crawler支持Slack-通知。这些通知可用于在抓取过程中监控爬虫的潜在错误。要为您的环境启用Slack通知,您需要执行以下操作

  • 使用带有slack附加组件的ftw.crawler安装

  • 在您的爬虫配置中设置SLACK_TOKENSLACK_CHANNEL参数,或者

  • 在调用/crawl脚本时,使用命令行中的–slacktoken–slackchannel参数。

要为您的集成生成有效的Slack令牌,您必须在Slack团队中创建一个新的机器人。在生成新机器人后,Slack将自动为该机器人生成一个有效的令牌。然后可以使用此令牌进行集成。您还可以生成一个测试令牌以测试集成,但请不要忘记如果您的应用程序进入生产状态,要创建一个机器人!

开发

要开始对ftw.crawler进行开发,请使用development.cfg buildout

ln -s development.cfg buildout.cfg
python bootstrap.py
bin/buildout

这将为您构建一个Tika JAXRS服务器和一个Solr实例。Solr配置已设置为与ftw/crawler/tests/assets/basic_config.py中的测试/示例配置兼容。

要针对示例配置运行爬虫

bin/tika-server
bin/solr-instance fg
bin/crawl ftw/crawler/tests/assets/basic_config.py

变更日志

1.4.0 (2017-11-08)

  • 增加 crawler_site_id 选项以改进清理。 [jone]

1.3.0 (2017-11-03)

  • 修复清理问题。警告:当您将站点 URL 设置为站点地图 URL 时,将“ftw.crawler”更新到此版本会破坏您现有的爬虫。请使用“sitemap_urls”属性。您还需要手动清理 Solr 索引并重新索引。 [jone]

1.2.1 (2017-10-30)

  • 在生成 MD5 哈希之前将 URL 编码为 UTF-8。 [raphael-s]

1.2.0 (2017-06-22)

  • 支持 Slack 通知。 [raphael-s]

1.1.0 (2016-10-04)

  • 支持配置绝对站点地图 URL。 [jone]

  • 过多请求时减速。 [jone]

1.0 (2015-11-09)

  • 初始实现。 [lgraf]

项目详情


下载文件

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

源代码分布

ftw.crawler-1.4.0.tar.gz (40.8 kB 查看散列)

上传时间

由支持