抓取和解析静态站点并导入到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 <表>

内容

  • 示例
  • 控制日志记录
  • 直接使用Transmogrifier Advanced[高级]id="id24" rel="nofollow">直接使用Transmogrifier(高级)
  • 贡献
  • 历史记录
  • 贡献者
  • 更改历史记录 ="id1"id="id32" rel="nofollow">1.1.1(2012-06-28)
  • 1.1(2012-04-28)
  • 1.0(2011-06-29)
  • 1.0b7(2011-02-12)
  • 1.0b6(2011-02-06)
  • 1.0b5(2010-12-13)
  • 1.0b4(2010-12-13)
  • 1.0b3(2010-11-20)
  • 1.0b2(2010-11-09)
  • 1.0b1(2010-11-08)
  • 下载
  • 简介

    FunnelWeb是一个WebCrawler,它可以提取网站内容,如标题、描述, 现有网站的图片和内容块。它过滤这些内容并上传 它进入了一个新的网站,该网站使用 plone cms。它为您提供了许多调整选项 如何迁移内容。当你想迁移一个没有 使用CMS或没有工具可以直接从站点数据库迁移内容。

    对于那些具有collective.transmogrifiercollective.transmogrifier的家庭,funnelweb是一个预先构建的管道,它结合了 来自四个不同包的蓝图( transmogrify.webcrawler transmogrify.htmlContentTextRactor transmogrify.siteanalyzer transmogrify.ploneremote )。由于 collective.transmogrifier下的框架可以为高级用户的转换添加进一步的步骤 过程:

    漏斗Web脚本执行的工作可以分为四个部分:

    1. 对站点进行爬网,包括在本地缓存,以便后续爬网更快并过滤掉 不需要的内容(transmogrify.webcrawler
    2. 删除样板文件/模板(自动或通过规则),以便只保留内容( transmogrify.htmlContentextractor
    3. 分析网站结构以提高内容质量,包括制作标题、默认值 视图、要创建的对象类型、在导航中显示的内容等( transmogrify.siteanalyzer
    4. 上传到cms,如plone,或将清理过的html保存到本地目录( transmogrify.ploneremote

    FunnelWeb使用 mr.migrator 框架,该框架允许它是FunnelWeb 集合。要运行的transmogrifier 管道:

    1. 扑通一声。有关如何安装,请参见 mr.migrator
    2. 可以通过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 funnelweb
    
    0

    您可以通过查看所有参数的列表

    $> easy_install funnelweb
    
    1

    构建覆盖

    任何命令行重写也可以"烘焙"到funnelweb脚本中。例如

    $> easy_install funnelweb
    
    2

    任何形式的参数

    $> easy_install funnelweb
    
    3

    将成为内置

    $> easy_install funnelweb
    
    4

    在命令行中

    $> easy_install funnelweb
    
    5

    推荐用法

    下面是您通常如何使用漏斗网的概述。

    1. 首先设置buildout以生成命令行漏斗web
    2. 创建一个pipeline.cfg,包括funnelweb.remote(请参见使用本地管道配置
    3. 将管道文件烘焙到构建中(请参见构建覆盖
    4. 测试对站点进行爬网并将其存储到缓存中(请参见爬网-要导入的HTML)
    5. 您可能需要设置一些爬网程序:忽略规则
    6. 将整个站点爬网到缓存中(请参见爬网-要导入的HTML)
    7. 使用–crawler:max=10对前10页进行爬网
    8. 在调试模式下,使用模板来查找页面的标题、说明和文本
    9. 上传到扑通 进行测试
    10. 如果结构和URL符合您的期望,请使用网站分析
    11. 重复爬网更多页面

    配置选项

    完整的步骤列表可以和变形器一起配置 每个人的蓝图

    1. 爬行
    <表> < COL/> < COL/> <正文> 爬虫程序: transmogrify.webcrawler 缓存: transmogrify.webcrawler.cache 类型猜测: transmogrify.webcrawler.typerecognator 删除: collective.transmogrifier.sections.condition <表>
    1. 模板
    <表> < COL/> < COL/> <正文> 模板1: transmogrify.htmlcontentextractor 模板2: transmogrify.htmlcontentextractor 模板3: transmogrify.htmlcontentextractor 模板4: transmogrify.htmlcontentextractor 模板自动: transmogrify.htmlcontentextractor.auto <表>
    1. 场地分析
    <表> < COL/> < COL/> <正文> 站点映射器: transmogrify.siteanalyzer.sitemapper 索引猜测: transmogrify.siteanalyzer.defaultpage 标题:http://pypi.python.org/pypi/transmorgify.siteanalyzer\transmorgify siteanalyzer title" rel="nofollow">transmorgify.siteanalyzer.title 附件猜测: transmogrify.siteanalyzer.attach 隐藏: transmogrify.siteanalyzer.hidefromnav urltidy: transmogrify.siteanalyzer.urltidy 添加文件夹: transmogrify.pathsorter 更改类型: collective.transmogrifier.sections.inserter <表>
    1. 正在上载
    <表> < COL/> < COL/> <正文> ploneupload: transmogrify.ploneremote.remoteconstructor ploneupdate: transmogrify.ploneremote.remoteschemaup水 plonehide: transmogrify.ploneremote.remotenavigationexcluder 发布: collective.transmogrifier.sections.inserter plonepublish: transmogrify.ploneremote.remoteworkflowupdater plonealias: transmogrify.ploneremote.remoteredirector ploneprune: transmogrify.ploneremote.remoteprune 本地上载: transmogrify.webcrawler.cache <表>

    或者使用命令行帮助查看可用选项的列表

    $> easy_install funnelweb
    
    1

    下面详细介绍了这些步骤最常用的配置选项。

    爬网-要导入的HTML

    FunnelWeb从实时网站、磁盘上的文件夹或文件夹导入HTML 在带有HTML的磁盘上,该HTML是从实时网站检索的,并且可能仍然具有绝对的 指向该网站的链接。

    漏斗Web只能导入它可以爬网的内容,即链接自的内容 HTML。如果您的站点包含javascript链接或受密码保护的内容,则 你可能需要执行一些额外的步骤才能让漏斗网爬行 内容:

    要对实时网站进行爬网,请为爬网程序提供一个基本的http url以开始爬网。 此URL必须是站点中所有其他URL的起始URL。

    例如

    $> easy_install funnelweb
    
    7

    将爬网程序限制为前50页,然后转换内容 进入一个本地plone站点。

    你爬行的站点将在本地缓存,因此如果你再次运行漏斗网,它将运行得更快。如果你愿意 要禁用本地缓存,请使用

    $> easy_install funnelweb
    
    8

    如果要重置缓存,刷新其数据,请将爬网程序缓存设置为无

    $> easy_install funnelweb
    
    9

    默认情况下,缓存存储在var/funnelwebcache/{siteurl}/中。您可以使用:

    $> buildout
    
    0

    您还可以通过使用 文件:// 样式的url来抓取包含相对链接的html本地目录。

    $> buildout
    
    1

    或者如果本地目录包含从网站保存的HTML,并且其中可能包含绝对URL, 您可以将此设置为缓存。爬虫程序将始终首先查找缓存

    $> buildout
    
    2

    以下内容不会爬网任何大于4MB的内容

    $> buildout
    
    3

    按正则表达式跳过爬网链接

    $> buildout
    
    4

    如果funnelweb在解析某些页面的html时遇到问题,可以进行预处理 分析之前的HTML。例如

    $> buildout
    
    5

    如果您想跳过处理某些mimetype类型的链接,可以使用 下降:条件 选项。此tales表达式确定将进一步处理的内容

    $> buildout
    
    6

    模板

    FunnelWeb有一个内置的聚类算法,它尝试从HTML模板中自动提取内容。 这是缓慢的,并不总是有效的。通常,您需要输入自己的模板提取规则。

    如果要关闭自动模板

    $> buildout
    
    7

    规则的形式是

    $> buildout
    
    8

    例如

    $> buildout
    
    9

    注意,对于单个模板,例如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/buildout
    
    0

    在templateauto上设置调试模式将为您提供有关其使用的规则的详细信息。

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    1

    有关xpath的更多信息,请参见

    网站分析

    为了提供一个看起来更干净的plone站点,有几个选项要分析 整个爬网网站并清理干净。默认情况下,这些功能处于关闭状态。

    确定项是否为容器的默认页(它有许多链接 到该容器中的项目,即使不包含在该文件夹中),然后移动 在该文件夹中,使用

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    2

    通过分析反向链接文本,您可以自动找到更好的页面标题

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    3

    下面将查找仅由一个页面引用的项,并将它们移到 以该页作为默认视图的新文件夹。

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    4

    或者,下面只移动图像附件,并将索引html用作新的 新创建文件夹的默认页的名称

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    5

    下面将根据tales表达式整理url

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    6

    如果您想在内容上传前移动内容,也可以使用urltidy步骤,例如

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    7

    如果您想隐藏导航中的内容,可以使用 hideguess

    < Buff行情> $>;bin/funnelweb–hideguess:condition=python:item['path']=='musthide'

    上传到plone

    上载通过远程XML-RPC调用进行,因此可以在任何地方对实时运行的站点进行上载。

    设置网站的上载位置以供使用

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    8

    目前只支持通过在url中设置用户名和密码进行基本身份验证。如果没有目标 设置后,网站将被爬网,但不会上载。

    如果要更改上载内容的类型

    [buildout]
    parts += funnelweb
    
    [funnelweb]
    recipe = funnelweb
    
    $> buildout init
    $> bin/buildout
    
    9

    这将为项目类型设置一个新值。您可以设置此条件,例如

    $> bin/funnelweb
    
    0

    或者对新类型使用更复杂的表达式

    < Buff行情> $>;bin/funnelweb–changetype:value=python:item['''u path'].startswith('/news')和'newnewstype'或item[''u type]

    默认情况下,funnelweb将基于原始的已爬网url自动创建plone别名,以便任何旧链接 将自动重定向到新清理的URL。您可以通过

    $> bin/funnelweb
    
    1

    您可以通过设置以下内容来更改发布到哪个状态的项目

    $> bin/funnelweb
    
    2

    漏斗网会在plone的导航中隐藏某些项目,如果该项目只链接过 从内容区域内。您可以通过

    $> bin/funnelweb
    
    3

    你可以得到一个本地文件表示通过使用以下命令进行编程

    $> bin/funnelweb
    
    4

    示例

    您可以自由地使用fork并添加自己的示例来提取公共站点的内容,或者 CMS的

    阅读文档

    作为一个例子,下面的构建将创建一个漏斗web脚本 将常规sphinx文档转换为远程plone内容 在Plonehelpcenter中

    $> bin/funnelweb
    
    5

    乔姆拉

    todo

    按wordpress

    todo

    德鲁巴 todo

    其他

    在此处添加您自己的示例

    控制日志记录

    通过设置调试命令行开关,可以在任何特定集合上显示其他调试输出。 例如,查看有关模板匹配失败的其他详细信息

    $> bin/funnelweb
    
    6

    直接使用Transmogrifier(高级)

    您可能需要为您的特定 转换用例。为此,可以扩展漏斗网的底层 输送管道。FunnelWeb使用一个transmorifier管道来执行所需的转换和所有 命令行和配方选项指管道中的选项。

    您可以通过以下命令查看管道及其所有选项

    $> bin/funnelweb --show-pipeline
    

    您还可以保存此管道并根据自己的需要进行自定义

    $> bin/funnelweb --show-pipeline > pipeline.cfg
    $> {edit} pipeline.cfg
    $> bin/funnelweb --pipeline=pipeline.cfg
    

    定制管道允许您添加自己的个人转换 标准漏斗网工具尚未预先考虑。

    请参阅Transmorgifer文档,了解如何添加自己的蓝图或添加 已存在于您的自定义管道中。

    使用外部蓝图

    如果您决定需要自定义管道,并且希望安装转换 使用尚未包含在漏斗网或Transmogrifier中的蓝图的步骤,可以包括 他们在漏斗网构建部分使用 鸡蛋选项

    $> bin/funnelweb
    
    9

    但是,只有当蓝图包包含以下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的默认管道使用什么。

    漏斗Web管道中可用的属性

    在FunnelWeb中使用默认蓝图时,以下是一些属性 将被附加到每个蓝图可以访问的项目上。这些可以用于 条件声明等以及您自己的蓝图。

    < DL>
    \u网址
    传递到WebCrawler的URL的基
    路径
    剩余的URL的下一个。网址
    + =网址
    \u mimetype
    爬虫程序返回的mimetype
    >内容
    已爬网项目的内容,包括图像、文件或HTML数据。
    原始路径
    已爬网项目的原始路径。这对于设置重定向非常有用 迁移内容后不会出现404个错误。
    排序顺序
    表示爬网此项的顺序的整数。有助于确定 在服务器上创建的文件夹中,如果您的站点 具有自上而下排列链接的导航。
    \u类型
    由"typeguess"步骤返回的要创建的对象类型
    标题 说明 文本
    模板步骤通常会创建字段,其中的内容取自 \u content
    >模板
    模板步骤将保留未分隔成以下不同字段的html 属性。
    默认页
    设置要告诉上载步骤设置包含项的文件夹项 在 \u default page 中提到,它是该文件夹上显示的默认页,而不是内容列表。
    u转换
    指定要在项目上载或更新后对其执行的工作流操作。
    原点
    这与 transmogrify.siteanalysis.relinker 蓝图一起在内部使用,作为 告诉它您已经更改了 \u路径,现在您希望relinker找到 请参阅 \u origin 现在指向 \u path

    漏斗网管道

    参见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
    

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

    推荐PyPI第三方库


    热门话题
    java为什么我们不能将ArrayList<Integer>传递给具有(Integer…)的方法参数   java Spring RestTemplate映射JSON对映射的响应引发不匹配的PutException   在系统中找到java Selenium元素,但在Jenkins中未找到   java在Android中使用JavaMail API发送电子邮件,而不使用默认/内置应用程序   数组如何在Java数据结构中同时存储数字和相应的单词?   为什么“+”运算符未定义?JAVA   java如何在游戏中添加高分系统?   java在球门碰撞中区分球和球员   java如何使用SpringSecurity4.0.1使用Auth令牌实现Rest完整Web服务。释放   java如何解决这个错误:Android资源链接失败?   java多线程文件处理和数据库批插入   导致Tomcat失败的java无用块线程   java主线程做了太多的工作,尽管我使用了异步线程(laggy UI)   在Java FX 2.0中滚动锚定节点时,锚定始终可见?   java使用EJB3中的客户机jar和设计模式