自动抓取网页数据(GatherPlatform工程与源代码分析数据抓取解析部分目录4.1框架简要分析)

优采云 发布时间: 2022-01-26 04:13

  自动抓取网页数据(GatherPlatform工程与源代码分析数据抓取解析部分目录4.1框架简要分析)

  聚集平台

  工程和源代码分析

  数据抓取分析部分

  内容

  4.1 Webmagic框架简析3

  4.2HanLP框架简析6

  Gather Platform项目介绍

  Gather Platform github上的地址是/gsh199449/spider,一个图形化操作和配置界面的网络爬虫。

  Gather Platform的交流QQ群是206264662,网上搜索看到这个开源的爬虫项目,用起来还是挺方便的,所以想了解一下它的工作原理,写这篇源码分析解读,个人水平有限,仅作为自己的学习笔记。

  Gather Platform是一套基于Webmagic内核的数据采集和搜索平台,具有Web任务配置和任务管理界面。

  具有以下功能:

  根据配置的模板执行数据采集自动检测网页正文,无需配置采集模板,自动提取文章发布时间动态字段提取和抓取数据静态字段植入管理,包括:搜索、添加、删除、修改和检查,根据新的数据模板重新提取数据,对采集的数据进行NLP处理,包括:提取关键词,提取摘要,提取收录相关文章推荐的实体词,分析文章中人与地的关系

  具体功能和手册可以参考作者官方手册网站,gsh199449.github.io/gather_platform_pages/,这里不多说,主要是想了解它的代码结构和代码工作流程。

  采集平台代码结构

  请看《采集-平台-工程与源码分析-前端部分.docx》

  前端接口功能部分

  请看《采集-平台-工程与源码分析-前端部分.docx》

  浅析Webmagic框架进行数据采集和分析

  WebMagic 的结构分为四大组件:Downloader、PageProcessor、Scheduler 和 Pipeline,它们由 Spider 组织。这四个组件分别对应了爬虫生命周期中的下载、处理、管理和持久化的功能。WebMagic 的设计参考了 Scapy,但实现更类似于 Java。

  Spider 组织这些组件,以便它们可以相互交互并处理执行。Spider可以看作是一个大容器,也是WebMagic逻辑的核心。

  WebMagic的整体架构图如下:

  

  下载器负责从 Internet 下载页面以进行后续处理。WebMagic 默认使用 Apache HttpClient 作为下载工具。

  PageProcessor 负责解析页面、提取有用信息和发现新链接。WebMagic 使用 Jsoup 作为 HTML 解析工具,并在其基础上开发了 Xsoup,一个解析 XPath 的工具。PageProcessor对于每个站点的每个页面都是不同的,是需要用户自定义的部分。

  Scheduler 负责管理要爬取的 URL,以及一些去重工作。WebMagic 默认提供 JDK 的内存队列来管理 URL,并使用集合进行去重。还支持使用 Redis 进行分布式管理。除非项目有一些特殊的分布式需求,否则不需要自己定制Scheduler。

  Pipeline负责提取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供两种结果处理方案:“输出到控制台”和“保存到文件”。Pipeline 定义了保存结果的方式。如果要保存到指定的数据库,需要编写相应的Pipeline。通常,对于一类需求,只需要编写一个 Pipeline。

  另一方面,这个框架内部有一些数据流的对象。

  Request是对URL地址的一层封装,一个Request对应一个URL地址。

  它是PageProcessor 与Downloader 交互的载体,也是PageProcessor 控制Downloader 的唯一途径。除了 URL 本身,它还收录一个 Key-Value 结构的额外字段。你可以额外保存一些特殊的属性,并在其他地方读取它们来完成不同的功能。例如,添加上一页的一些信息等。

  Page 表示从 Downloader 下载的页面 - 它可能是 HTML、JSON 或其他文本内容。Page是WebMagic抽取过程的核心对象,它提供了一些抽取、结果保存等方法。在第4章的例子中,我们将详细介绍它的使用。

  ResultItems相当于一个Map,它保存了PageProcessor处理的结果,供Pipeline使用。它的API和Map非常相似,值得注意的是它有一个字段skip,如果设置为true,它不应该被Pipeline处理。

  Spider 是 WebMagic 内部流程的核心。Downloader、PageProcessor、Scheduler 和 Pipeline 都是 Spider 的属性。这些属性可以自由设置,通过设置该属性可以实现不同的功能。Spider也是WebMagic操作的入口,封装了爬虫创建、启动、停止、多线程等功能。

  一个典型的 webmagic 爬虫代码示例如下:

  

  HanLP框架简析

  HanLP是由一系列模型和算法组成的NLP工具包。它以大快搜索为主,完全开源。目标是普及自然语言处理在生产环境中的应用。HanLP具有功能齐全、性能高、结构清晰、语料最新、可定制等特点。

  HanLP 提供以下功能:

  中文分词

  HMM-Bigram(速度和准确性的最佳平衡;一百兆内存)

  最短分词,N-最短分词

  从词构词(注重准确度,世界最大语料库,可以识别新词;适用于NLP任务)

  感知器分割、CRF分割

  字典分词(注重速度,每秒千万字;节省内存)

  极快的字典分词

  所有标记器都支持:

  索引全拆分模式

  用户自定义字典

  兼容繁体中文

  训练用户自己的领域模型

  词性标注

  HMM 词性标注(快速)

  感知器词性标注、CRF词性标注(高精度)

  命名实体识别

  基于HMM角色标注的命名实体识别(快)

  中文名称识别、音译名称识别、日文名称识别、地名识别、实体名称识别

  基于线性模型的命名实体识别(高精度)

  感知器命名实体识别、CRF命名实体识别

  关键词提取

  TextRank关键词提取

  自动总结

  TextRank 自动摘要

  短语提取

  基于互信息和左右信息熵的短语提取

  拼音转换

  和弦字符、声母、韵母、声调

  简化和传统转换

  简繁分歧词(简体、繁体、台湾语、香港繁体)

  文字推荐

  语义推荐、拼音推荐、单词推荐

  依赖解析

  基于神经网络的高性能依赖解析器

  MaxEnt依赖解析

  文本分类

  情绪分析

  word2vec

  词向量训练、加载、词相似度计算、语义运算、查询、KMeans聚类

  文档语义相似度计算

  语料库工具

  一些默认模型是从小型语料库中训练出来的,鼓励用户自己训练。

  再详细看一下作者的在线demo,感觉这个框架还是很强大的,但是层次不限,只能简单理解。

  

  

  PhantomJS框架简析

  数据抓取部分代码分析

  数据解析部分代码分析

  数据存储部分代码分析

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线