失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > WebMagic爬取码市 猪八戒 一品威客外包数据

WebMagic爬取码市 猪八戒 一品威客外包数据

时间:2018-09-11 07:28:15

相关推荐

WebMagic爬取码市 猪八戒 一品威客外包数据

WebMagic介绍

1.1)概述

WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。

以上是WebMagic的官方简介,WebMagic是一个用于开发网络爬虫的Java框架,底层是HttpClient和Jsoup,相比HttpClient和Jsoup开发,WebMagic具有以下优点:

1.1.1 简单的API,可快速上手

1.1.2 模块化的结构,可轻松扩展

1.1.3 提供多线程和分布式支持

1.2)总体架构

WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。

而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

WebMagic总体架构图如下:

1.2.1 Downloader

Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

1.2.2 PageProcessor

PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。

在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。

1.2.3 Scheduler

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

除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

1.2.4Pipeline

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

Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。

1.2.5 Request

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

它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方式。

除了URL本身外,它还包含一个Key-Value结构的字段extra。你可以在extra中保存一些特殊的属性,然后在其他地方读取,以完成不同的功能。例如附加上一个页面的一些信息等。

1.2.6 Page

Page代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者其他文本格式的内容。

Page是WebMagic抽取过程的核心对象,它提供一些方法可供抽取、结果保存等。

1.2.7 ResultItems

ResultItems相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。它的API与Map很类似,值得注意的是它有一个字段skip,若设置为true,则不应被Pipeline处理。

1.2.8 控制爬虫运转的引擎Spider

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

1.2.9 爬虫配置Site

Site可以对爬虫进行一些配置配置,包括编码、抓取间隔、超时时间、重试次数等。

一般来说,对于编写一个爬虫,PageProcessor是需要编写的部分,而Spider则是创建和控制爬虫的入口。

快速开始(以爬取外包平台码市/project/21257为例)

2.1 使用Maven引入依赖

2.2 根据页面字段设计实体类

2.3 实现PageProcessor

2.4 使用Pipeline保存结果

2.5 爬虫的配置、启动和中止

源码的下载

/haidilaohotpot/spider

注意

在0.7.3版本中,爬取只支持TLS1.2的https站点的时候会报错:

.ssl.SSLException: Received fatal alert: protocol_version

解决办法:/code4craft/webmagic/issues/701

相关文档

WebMagic官网:http://webmagic.io/

官方文档:http://webmagic.io/docs/en/

关注微信公众号,某课资源、技术精讲、妹纸免费看

如果觉得《WebMagic爬取码市 猪八戒 一品威客外包数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。