爬取网站,提取文本和元数据,在Solr中索引
项目描述
ftw.crawler
安装
要安装 ftw.crawler,最简单的方法是创建一个包含配置的buildout,使用 zc.recipe.egg 拉取egg,并在 bin/ 目录中创建一个脚本,该脚本以相应的配置作为参数直接启动爬虫。
首先,为爬虫创建一个配置文件。您可以根据 ftw/crawler/tests/assets/basic_config.py 创建配置,将其复制到您的buildout中,并根据需要对其进行修改。
请确保至少配置 tika 和 solr URL,使其指向相应服务的正确位置,并调整 sites 列表以满足您的需求。
创建一个使用 zc.recipe.egg 安装 ftw.crawler 的buildout配置。
crawler.cfg
[buildout] parts += crawler crawl-foo-org [crawler] recipe =
zc.recipe.eggeggs =ftw.crawler进一步定义一个buildout部分,创建一个 bin/crawl-foo-org 脚本,该脚本将使用绝对路径调用 bin/crawl foo_org_config.py(以便更容易从cron作业中使用)
[crawl-foo-org] recipe =
collective.recipe.scriptgencmd =${buildout:bin-directory}/crawlarguments = ${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.supervisorplugins = superlance port =8091user =supervisorpassword =adminprograms = 10 tika-server (stopasgroup=true) ${buildout:bin-directory}/tika-server true your_os_user[tika-server-download] recipe =hexagonit.recipe.downloadurl =http://repo1.maven.org/maven2/org/apache/tika/tika-server/1.5/tika-server-1.5.jarmd5sum =0f70548f233ead7c299bf7bc73bfec26download-only =truefilename =tika-server.jar[tika-server] port =9998recipe =collective.recipe.scriptgencmd =javaarguments =-jar ${tika-server-download:destination}/${tika-server-download:filename} --port ${:port}根据需要修改 your_os_user 和管理器和Tika端口。
最后,添加 bootstrap.py 并创建 buildout.cfg,将所有这些内容组合在一起
buildout.cfg
[buildout] extensions =
mr.developerextends = 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_TOKEN和SLACK_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
链接
版权
本软件包由4teamwork版权所有。
ftw.crawler 采用 GNU 通用公共许可证,版本 2。
变更日志
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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 93d7c95a5666ee2987187e71b8da35aa857dfe1f11acb52a09ac711619c570e6 |
|
MD5 | cfe8756cbb1c4c58ba10661d182a83dd |
|
BLAKE2b-256 | b0c5b1862cd643a191f2637fb8dc9d7b65000e6e32471cef96eda8518ef080e2 |