zoukankan      html  css  js  c++  java
  • Python即时网络爬虫项目: 内容提取器的定义

    1. 项目背景

    python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作中。

    2. 解决方案

    为了解决这个问题,我们把影响通用性和工作效率的提取器隔离出来,描述了如下的数据处理流程图:

    图中“可插拔提取器”必须很强的模块化,那么关键的接口有:

    • 标准化的输入:以标准的HTML DOM对象为输入
    • 标准化的内容提取:使用标准的xslt模板提取网页内容
    • 标准化的输出:以标准的XML格式输出从网页上提取到的内容
    • 明确的提取器插拔接口:提取器是一个明确定义的类,通过类方法与爬虫引擎模块交互

    3. 提取器代码

    可插拔提取器是即时网络爬虫项目的核心组件,定义成一个类: gsExtractor
           python源代码文件及其说明文档请从 github 下载

    使用模式是这样的:

    • 实例化一个gsExtractor对象
    • 为这个对象设定xslt提取器,相当于把这个对象配置好(使用三类setXXX()方法)
    • 把html dom输入给它,就能获得xml输出(使用extract()方法)

    下面是这个gsExtractor类的源代码

     

    4. 用法示例

    下面是一个示例程序,演示怎样使用gsExtractor类提取GooSeeker官网的bbs帖子列表。本示例有如下特征:

    • 提取器所用的xslt模板提前放在文件中:xslt_bbs.xml
    • 仅作为示例,实际使用场景中,xslt来源有多个,最主流的来源是GooSeeker平台上的api
    • 在控制台界面上打印出提取结果

    下面是源代码,都可从 github 下载

    提取结果如下图所示:

    5. 接下来阅读

    本文已经说明了提取器的价值和用法,但是没有说怎样生成它,只有快速生成提取器才能达到节省开发者时间的目的,这个问题将在其他文章讲解,请看《Python使用xslt提取网页数据》

     

    6. 集搜客GooSeeker开源代码下载源

    1. GooSeeker开源Python网络爬虫GitHub源

    7. 文档修改历史

    2016-05-27:V2.0,增补项目背景介绍和价值说明
    2016-05-27:V2.1,实现了提取器类的从GooSeeker API接口获取xslt的方法
    2016-05-29:V2.2,增加第六章:源代码下载源,并更换github源的网址
    2016-06-03:V2.3,提取器代码更新为2.0。支持同一主题下多规则或多整理箱的情况,通过API方式获取xslt时可以传入参数“规则编号”和“整理箱名称”

  • 相关阅读:
    梦断代码阅读笔记一
    进度一
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    cf700E. Cool Slogans
    BZOJ1014: [JSOI2008]火星人prefix
    BZOJ2716: [Violet 3]天使玩偶
    cf1080F. Katya and Segments Sets
    BZOJ1354: [Baltic2005]Bus Trip
    灭绝树题集
    How Many Substrings?
  • 原文地址:https://www.cnblogs.com/gooseeker/p/5534080.html
Copyright © 2011-2022 走看看