GoldData学习实例-采集官网新闻数据

概述

在本节中,我们将讲述抓取政府官网地方新闻。并将抓取的新闻数据融入到以下两张数据表news_site和news中。

news_site(新闻来源)

字段类型说明

idbigint主键,自动增长

namevarchar(128)来源名称

news(新闻)

字段类型说明

idbigint主键,自动增长

titlevarchar(128)标题

site_idbigint外键,指向表news_site的id字段

contenttext内容

pub_datedatetime发布时间

date_createddatetime加入时间

我们很容易看到这两张表存在关联,那是怎样将数据写入关联呢,我们将再此一一介绍。

定义站点、数据集

定义抓取和抽取规则

在这里我们需要填入口地址。入口地址如果有多个,那么要以英文逗号相隔。如下图所示:

接下来我们编写规则时,首先是匹配URL,这里需要填写正则表达式。旁边的“?”号,点击后就会弹出相应的帮助文档。如下图所示:

然后数据集选择则我们要注意,如果抓取的仅需要的是链接,那么是否数据集选择否,且数据集字段必须要有一个名为href的字段。如下图所示:

否则是否数据集应该选择是,且数据集字段必须要有一个名为sn的字段。sn字段存放的数据一般是唯一值,相当于数据表里的id字段。如下图所示:

完整的规则内容显示如下:

[

  {

    __sample: http://sousuo.gov.cn/column/40520/0.htm

    match0: http\:\/\/sousuo\.gov\.cn\/column\/40520/\d+\.htm

    fields0:

    {

      __model: false

      __node: .news_box a

      href:

      {

        expr: a

        attr: abs:href

        js: ""

        __label: 链接

        __showOnList: false

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

    }

  }

  {

    __sample: http://www.gov.cn/xinwen/2019-02/26/content_5368539.htm

    match0: http\:\/\/www\.gov\.cn/xinwen/2019-\d{2}/\d{2}/content_\d+.htm

    fields0:

    {

      __model: true

      __dataset: news

      __node: ".article "

      sn:

      {

        expr: ""

        attr: ""

        js:

          '''

          var xx=md5(baseUri)

          xx

          '''

        __label: 编号

        __showOnList: false

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

      title:

      {

        expr: .article >h1

        attr: ""

        js: ""

        __label: 标题

        __showOnList: true

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

      pubdate:

      {

        expr: .pages-date:matchText

        attr: ""

        js: ""

        __label: 发布时间

        __showOnList: false

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

      source:

      {

        expr: .pages-date > span.font:contains(来源)

        attr: ""

        js:

          '''

          var xx=source.replace("来源:",'');

          xx

          '''

        __label: 来源

        __showOnList: true

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

      content:

      {

        expr: .pages_content

        attr: ""

        js: ""

        __label: 新闻内容

        __showOnList: false

        __type: ""

        down: "0"

        accessPathJs: ""

        uploadConf: ""

      }

    }

  }

]

配制和启动抓取器

一个抓取器可以配制抓取多个站点,一个站点也可以配制多个抓取器抓取。

然后点击“开始”,则会启动抓取器。

查看和导出数据

可以按照搜索条件进行导出数据。选择“导出”按扭后,还将提示导出哪些数据段,最后导出文件。 如果数据少量,将会导出为excel文件,否则下载的打包之后的zip文件。如下图所示:

本节内容描述到这里,下一篇将讲述如何通过金色数据如何将数据融合到数据表当中去。

(注:本内容是根据培训视频整理而成,https://golddata.100shouhou.com/front/docs)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,600评论 1 45
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,253评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,983评论 1 13
  • 今日终于六点多起床,洗漱刷牙,然后开始做饭,各种摆拍,才选出几自己满意的照片,秋葵是我今天第一吃,感觉还可以,果汁...
    明风桦阅读 230评论 0 0
  • RunLoop的创建可以认为所有线程的RunLoop都是懒加载的,直接使用currentRunLoop直接可以拿到...
    落雪无痕_t阅读 538评论 0 1