Webmagic爬虫案例

什么是网络爬虫

        在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯 靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。如何自动高效地获取互联网 中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题 而生的。 网络爬虫(Web crawler)也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

网络爬虫可以做什么

我们初步认识了网络爬虫,网络爬虫具体可以做什么呢?

  • 可以实现搜索引擎
  • 大数据时代,可以让我们获取更多的数据源。
  • 快速填充测试和运营数据
  • 为人工智能提供训练数据集

网络爬虫常用的技术(Java

1. 底层实现 HttpClient + Jsoup

      HttpClient Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目Cactus 和 HTMLUnit 都使用了 HttpClient。更多信息请关注http://hc.apache.org/jsoup 是一款Java HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOMCSS以及类似于jQuery的操作方法来取出和操作数据。

2.WebMagic框架简介

       webmagic是一个开源的Java爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。

webmagic的主要特色:

  • 完全模块化的设计,强大的可扩展性。
  • 核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。
  • 提供丰富的抽取页面API
  • 无配置,但是可通过POJO+注解形式实现一个爬虫。
  • 支持多线程。
  • 支持分布式。
  • 支持爬取js动态渲染的页面。
  • 无框架依赖,可以灵活的嵌入到项目中去。

架构解析

        WebMagic的设计目标是尽量的模块化,并体现爬虫的功能特点。这部分提供非常简单、灵活的API,在基本不改变开发模式的情况下,编写一个爬虫。WebMagic的结构分为DownloaderPageProcessorSchedulerPipeline四大组 件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管 理和持久化等功能。而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的 执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

Webmagic爬虫案例_第1张图片

四大组件       

  • Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了ApacheHttpClient作为下载工具。
  • PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部

    分。

  • Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。

  • Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供输出到控制台保存到文件两种结果处理方案。

用于数据流转的对象

  • Request 是对URL地址的一层封装,一个Request对应一个URL地址。
  • Page 代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者其他文本格式的内容。
  • ResultItems 相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。

demo代码下载地址:https://download.csdn.net/download/qciwyy/11620149

 

 

 

 

你可能感兴趣的:(JAVA)