抓取和解析静态站点并导入到plone
funnelweb的Python项目详细描述
漏斗网-内容转换变得简单
轻松地将现有的html内容转换为plone。
<表> < COL/> < COL/> <正文> 代码库: http://github.com/collective/funnelweb 问题和评论发送至: http://github.com/collective/funnelweb/issues 在以下位置报告错误:http://github.com/collective/funnelweb/issues" rel="nofollow">http://github.com/collective/funnelweb/issues https://github.com/collective/transmogrify.webcrawler/issues https://github.com/collective/transmogrify.htmlcontentextractor/issues https://github.com/collective/transmogrify.siteanalyzer/issues https://github.com/collective/transmogrify.ploneremote/issues <表>内容
-
漏斗Web-内容转换变得简单
- 简介
- 命令行的安装
- 命令行的配置
- 使用本地管道配置
- 命令行参数
- 构建覆盖
- 推荐用法
- 配置选项
- 爬行-要导入的HTML
- 模板
- 网站分析
- 上传到plone
- 使用外部蓝图
- 漏斗Web管道中可用的属性
- 漏斗Web管道
简介
FunnelWeb是一个WebCrawler,它可以提取网站内容,如标题、描述, 现有网站的图片和内容块。它过滤这些内容并上传 它进入了一个新的网站,该网站使用 plone cms。它为您提供了许多调整选项 如何迁移内容。当你想迁移一个没有 使用CMS或没有工具可以直接从站点数据库迁移内容。
对于那些具有collective.transmogrifiercollective.transmogrifier的家庭,funnelweb是一个预先构建的管道,它结合了 来自四个不同包的蓝图( transmogrify.webcrawler , transmogrify.htmlContentTextRactor transmogrify.siteanalyzer 和 transmogrify.ploneremote )。由于 collective.transmogrifier下的框架可以为高级用户的转换添加进一步的步骤 过程:
漏斗Web脚本执行的工作可以分为四个部分:
- 对站点进行爬网,包括在本地缓存,以便后续爬网更快并过滤掉 不需要的内容(transmogrify.webcrawler )
- 删除样板文件/模板(自动或通过规则),以便只保留内容( transmogrify.htmlContentextractor )
- 分析网站结构以提高内容质量,包括制作标题、默认值 视图、要创建的对象类型、在导航中显示的内容等( transmogrify.siteanalyzer )
- 上传到cms,如plone,或将清理过的html保存到本地目录( transmogrify.ploneremote )
FunnelWeb使用 mr.migrator 框架,该框架允许它是FunnelWeb 集合。要运行的transmogrifier 管道:
- 扑通一声。有关如何安装,请参见 mr.migrator 。
- 可以通过zc.buildout安装的命令行脚本。内容已上载 into通过它的web服务api来执行plone。
命令行的安装
您可以通过简易安装进行安装
$> easy_install funnelweb
这可以由
$> buildout
或者可以通过构建方法安装漏斗网(请参见zc.buildout)
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout
这可以由
$> bin/funnelweb
这里的示例将假定通过buildout进行安装
命令行的配置
漏斗网被组织成一系列的步骤,通过这些步骤,爬行的项目在最终被 上传。每个步骤都有一个或多个配置选项,因此您可以自定义导入过程 为了你的需要。几乎所有的进口都需要某种程度的配置。
漏斗网提供了三种配置管道的方法。
使用本地管道配置
您可以创建自己的pipeline.cfg来覆盖和扩展默认漏斗web 管道。
例如,使用以下命令创建名为pipeline.cfg的文件
[transmogrifier] include = funnelweb.remote [crawler] url=http://collective-docs.readthedocs.org/en/latest/
这将覆盖爬网程序蓝图设置"url"。您可以运行此命令
$> bin/funnelweb --pipeline=pipeline.cfg
您可以通过以下命令查看funnelweb.remote pipeline及其所有选项
$> bin/funnelweb --show-pipeline
您还可以保存此管道并根据自己的需要进行自定义
$> bin/funnelweb --show-pipeline > pipeline.cfg $> {edit} pipeline.cfg $> bin/funnelweb --pipeline=pipeline.cfg
命令行参数
可以通过命令行覆盖来自管道的任何参数
$> bin/funnelweb --crawler:url=http://www.whitehouse.gov
所有参数都是–(步骤:参数)=值。 每个配置键的第一部分是步骤,例如 爬虫程序 。第二部分是 特定步骤的配置选项。例如 url 。然后后跟=和值。
有些选项需要在构建部分中使用多行。这些可以被覆盖 通过命令行重复相同的参数,例如
$> easy_install funnelweb0
您可以通过查看所有参数的列表
$> easy_install funnelweb1
任何命令行重写也可以"烘焙"到funnelweb脚本中。例如
$> easy_install funnelweb2
任何形式的参数
$> easy_install funnelweb3
将成为内置
$> easy_install funnelweb4
在命令行中
$> easy_install funnelweb5
推荐用法
下面是您通常如何使用漏斗网的概述。
- 首先设置buildout以生成命令行漏斗web
- 创建一个pipeline.cfg,包括funnelweb.remote(请参见使用本地管道配置
- 将管道文件烘焙到构建中(请参见构建覆盖
- 测试对站点进行爬网并将其存储到缓存中(请参见爬网-要导入的HTML)
- 您可能需要设置一些爬网程序:忽略规则
- 将整个站点爬网到缓存中(请参见爬网-要导入的HTML)
- 使用–crawler:max=10对前10页进行爬网
- 在调试模式下,使用模板来查找页面的标题、说明和文本
- 上传到扑通 进行测试
- 如果结构和URL符合您的期望,请使用网站分析
- 重复爬网更多页面
配置选项
完整的步骤列表可以和变形器一起配置 每个人的蓝图
- 爬行
- 模板
- 场地分析
- 正在上载
或者使用命令行帮助查看可用选项的列表
$> easy_install funnelweb1
下面详细介绍了这些步骤最常用的配置选项。
爬网-要导入的HTML
FunnelWeb从实时网站、磁盘上的文件夹或文件夹导入HTML 在带有HTML的磁盘上,该HTML是从实时网站检索的,并且可能仍然具有绝对的 指向该网站的链接。
漏斗Web只能导入它可以爬网的内容,即链接自的内容 HTML。如果您的站点包含javascript链接或受密码保护的内容,则 你可能需要执行一些额外的步骤才能让漏斗网爬行 内容:
要对实时网站进行爬网,请为爬网程序提供一个基本的http url以开始爬网。 此URL必须是站点中所有其他URL的起始URL。
例如
$> easy_install funnelweb7
将爬网程序限制为前50页,然后转换内容 进入一个本地plone站点。
你爬行的站点将在本地缓存,因此如果你再次运行漏斗网,它将运行得更快。如果你愿意 要禁用本地缓存,请使用
$> easy_install funnelweb8
如果要重置缓存,刷新其数据,请将爬网程序缓存设置为无
$> easy_install funnelweb9
默认情况下,缓存存储在var/funnelwebcache/{siteurl}/中。您可以使用:
$> buildout0
您还可以通过使用 文件:// 样式的url来抓取包含相对链接的html本地目录。
$> buildout1
或者如果本地目录包含从网站保存的HTML,并且其中可能包含绝对URL, 您可以将此设置为缓存。爬虫程序将始终首先查找缓存
$> buildout2
以下内容不会爬网任何大于4MB的内容
$> buildout3
按正则表达式跳过爬网链接
$> buildout4
如果funnelweb在解析某些页面的html时遇到问题,可以进行预处理 分析之前的HTML。例如
$> buildout5
如果您想跳过处理某些mimetype类型的链接,可以使用 下降:条件 选项。此tales表达式确定将进一步处理的内容
$> buildout6
模板
FunnelWeb有一个内置的聚类算法,它尝试从HTML模板中自动提取内容。 这是缓慢的,并不总是有效的。通常,您需要输入自己的模板提取规则。
如果要关闭自动模板
$> buildout7
规则的形式是
$> buildout8
例如
$> buildout9
注意,对于单个模板,例如tempLate1,所有的xpath都需要匹配否则 将跳过该模板并尝试下一个模板。如果你愿意的话 因此,模板匹配不需要一个xpath,然后使用关键字 optional 或 optionaltext 而不是xpath之前的 文本 或 html 。
默认管道中有四个模板,分别是 template1 , template2 , template3 和 template4
当在单个模板中应用xpath时,它匹配的html将从页面中删除。 同一模板中的另一个规则与同一HTML片段不匹配。
如果内容部分对plone没有用处(例如,多余的文本、标题或描述),则可以有效地删除该html 从内容。
要帮助调试模板规则,可以设置调试模式
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout0
在templateauto上设置调试模式将为您提供有关其使用的规则的详细信息。
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout1
有关xpath的更多信息,请参见
网站分析
为了提供一个看起来更干净的plone站点,有几个选项要分析 整个爬网网站并清理干净。默认情况下,这些功能处于关闭状态。
确定项是否为容器的默认页(它有许多链接 到该容器中的项目,即使不包含在该文件夹中),然后移动 在该文件夹中,使用
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout2
通过分析反向链接文本,您可以自动找到更好的页面标题
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout3
下面将查找仅由一个页面引用的项,并将它们移到 以该页作为默认视图的新文件夹。
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout4
或者,下面只移动图像附件,并将索引html用作新的 新创建文件夹的默认页的名称
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout5
下面将根据tales表达式整理url
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout6
如果您想在内容上传前移动内容,也可以使用urltidy步骤,例如
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout7
如果您想隐藏导航中的内容,可以使用 hideguess
< Buff行情> $>;bin/funnelweb–hideguess:condition=python:item['path']=='musthide'上传到plone
上载通过远程XML-RPC调用进行,因此可以在任何地方对实时运行的站点进行上载。
设置网站的上载位置以供使用
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout8
目前只支持通过在url中设置用户名和密码进行基本身份验证。如果没有目标 设置后,网站将被爬网,但不会上载。
如果要更改上载内容的类型
[buildout] parts += funnelweb [funnelweb] recipe = funnelweb $> buildout init $> bin/buildout9
这将为项目类型设置一个新值。您可以设置此条件,例如
$> bin/funnelweb0
或者对新类型使用更复杂的表达式
< Buff行情> $>;bin/funnelweb–changetype:value=python:item['''u path'].startswith('/news')和'newnewstype'或item[''u type]默认情况下,funnelweb将基于原始的已爬网url自动创建plone别名,以便任何旧链接 将自动重定向到新清理的URL。您可以通过
$> bin/funnelweb1
您可以通过设置以下内容来更改发布到哪个状态的项目
$> bin/funnelweb2
漏斗网会在plone的导航中隐藏某些项目,如果该项目只链接过 从内容区域内。您可以通过
$> bin/funnelweb3
你可以得到一个本地文件表示通过使用以下命令进行编程
$> bin/funnelweb4
示例
您可以自由地使用fork并添加自己的示例来提取公共站点的内容,或者 CMS的
阅读文档
作为一个例子,下面的构建将创建一个漏斗web脚本 将常规sphinx文档转换为远程plone内容 在Plonehelpcenter中
$> bin/funnelweb5
乔姆拉
按wordpress
德鲁巴
todo
其他
在此处添加您自己的示例
控制日志记录
通过设置调试命令行开关,可以在任何特定集合上显示其他调试输出。 例如,查看有关模板匹配失败的其他详细信息
$> bin/funnelweb6
直接使用Transmogrifier(高级)
您可能需要为您的特定 转换用例。为此,可以扩展漏斗网的底层 输送管道。FunnelWeb使用一个transmorifier管道来执行所需的转换和所有 命令行和配方选项指管道中的选项。
您可以通过以下命令查看管道及其所有选项
$> bin/funnelweb --show-pipeline
您还可以保存此管道并根据自己的需要进行自定义
$> bin/funnelweb --show-pipeline > pipeline.cfg $> {edit} pipeline.cfg $> bin/funnelweb --pipeline=pipeline.cfg
定制管道允许您添加自己的个人转换 标准漏斗网工具尚未预先考虑。
请参阅Transmorgifer文档,了解如何添加自己的蓝图或添加 已存在于您的自定义管道中。
使用外部蓝图
如果您决定需要自定义管道,并且希望安装转换 使用尚未包含在漏斗网或Transmogrifier中的蓝图的步骤,可以包括 他们在漏斗网构建部分使用 鸡蛋选项
$> bin/funnelweb9
但是,只有当蓝图包包含以下setuptools entrypoint时,这才有效 在其 设置中。py
[transmogrifier] include = funnelweb.remote [crawler] url=http://collective-docs.readthedocs.org/en/latest/0 < div > 注
一些更具变幻莫测性的蓝图假设它们是在一个巴龙内部运行的。 进程,如 plone.app.transmogrifier 中的进程(请参见 http://pypi.python.org/pypi/plone.app.transmogrifier )。漏斗网 不在plone进程中运行,因此这些蓝图将不起作用。如果 如果你想把内容上传到plone中,你可以使用 transmogrify.ploneremote 提供替代实现 它将通过XML-RPC远程上传内容。 transmogrify.ploneremote 已经包含在漏斗网中 漏斗Web的默认管道使用什么。
在FunnelWeb中使用默认蓝图时,以下是一些属性 将被附加到每个蓝图可以访问的项目上。这些可以用于 条件声明等以及您自己的蓝图。
< DL>漏斗网管道
参见http://github.com/collective/funnelweb/blob/master/funnelweb/remote.cfg" rel="nofollow">http://github.com/collective/funnelweb/blob/master/funnelweb/remote.cfg 或类型< /p>
$> bin/funnelweb --show-pipeline