大数据采集:爬虫框架之WebMagic的基本使用
2017-01-22 15:21
369 查看
大米锅巴加点盐 2017-01-21 22:14
![](http://p3.pstatp.com/large/15a4000085ea1ec12bf7)
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。作为爬虫框架,它使用httpclient作为获取网页工具、使用Jsoup作为分析页面定位抓取内容、使用ExecutorService线程池作为定时增量抓取、Jdiy作为持久层框架。不熟悉这些名词的同学们可以先行百度一下这些都是什么,起了什么作用,以便更好的理解爬虫的原理。
爬虫主要思想分这么几步:
1. 根据种子链接,抽取目标链接放入待爬取队列
2. 从页面中解析并抽取需要的信息,webmagic在这里会用Jsoup组件来解析html页面。
3. 处理数据。将已提取出来的数据以文件格式存放或者存入数据库以及搜索引擎索引库等。
此处以爬取天涯论坛某个栏目下的帖子主题和链接为例(示例比较简单,仅供大家入门参考):
要爬取的种子链接页面如下,
![](http://p1.pstatp.com/large/15370007254fd3e00768)
配置java工程及导入webmagic的核心jar等操作步骤此处不再详细描述,下面说一下代码示例。
首先,需要新建一个实现PageProcessor接口的类,复写process方法。部分截图如下:
![](http://p1.pstatp.com/large/153a000290ef5a8f9fd9)
程序结构:
![](http://p3.pstatp.com/large/15a6000319b483f5e4f6)
第一步,抽取目标链接放入待爬取队列。
说明:
程序启动入口处设置种子链接并设置相应的Pipeline(第三步会讲PipeLine怎么写),定义爬取时使用的线程数,并使用webmagic监控(这一句话:SpiderMonitor.instance().register(CastSpider))。
代码如下:
![](http://p3.pstatp.com/large/15370007267b4cf87acc)
此处从页面html中提取所有翻页的链接并使用正则表达式筛选后放入待爬取队列:
![](http://p1.pstatp.com/large/153a00029181f67dbd28)
第二步,从页面中解析并抽取需要的信息。此处获取帖子主题、作者、点击数、回复数、最后回复时间,process方法内示例:
![](http://p3.pstatp.com/large/153a000291a46148bbc9)
第三步,处理数据。此处以存放入mysql数据库为例,定义一个MysqlPipeline,实现Pipeline接口。
![](http://p1.pstatp.com/large/153a000291d4ddf241e9)
最后,大功告成,启动运行后,数据库中存储的数据如下:
![](http://p3.pstatp.com/large/15a40000840d8ce85477)
怎么样,是不是很简单?大家一起试着写写,从网上爬点要的数据吧。
不能空想理论和架构,搞软件研发相关工作的同学们,该动手时就要动手!学习编程开发没有捷径,一定要动手来写!
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。作为爬虫框架,它使用httpclient作为获取网页工具、使用Jsoup作为分析页面定位抓取内容、使用ExecutorService线程池作为定时增量抓取、Jdiy作为持久层框架。不熟悉这些名词的同学们可以先行百度一下这些都是什么,起了什么作用,以便更好的理解爬虫的原理。
爬虫主要思想分这么几步:
1. 根据种子链接,抽取目标链接放入待爬取队列
2. 从页面中解析并抽取需要的信息,webmagic在这里会用Jsoup组件来解析html页面。
3. 处理数据。将已提取出来的数据以文件格式存放或者存入数据库以及搜索引擎索引库等。
此处以爬取天涯论坛某个栏目下的帖子主题和链接为例(示例比较简单,仅供大家入门参考):
要爬取的种子链接页面如下,
配置java工程及导入webmagic的核心jar等操作步骤此处不再详细描述,下面说一下代码示例。
首先,需要新建一个实现PageProcessor接口的类,复写process方法。部分截图如下:
程序结构:
第一步,抽取目标链接放入待爬取队列。
说明:
程序启动入口处设置种子链接并设置相应的Pipeline(第三步会讲PipeLine怎么写),定义爬取时使用的线程数,并使用webmagic监控(这一句话:SpiderMonitor.instance().register(CastSpider))。
代码如下:
此处从页面html中提取所有翻页的链接并使用正则表达式筛选后放入待爬取队列:
第二步,从页面中解析并抽取需要的信息。此处获取帖子主题、作者、点击数、回复数、最后回复时间,process方法内示例:
第三步,处理数据。此处以存放入mysql数据库为例,定义一个MysqlPipeline,实现Pipeline接口。
最后,大功告成,启动运行后,数据库中存储的数据如下:
怎么样,是不是很简单?大家一起试着写写,从网上爬点要的数据吧。
不能空想理论和架构,搞软件研发相关工作的同学们,该动手时就要动手!学习编程开发没有捷径,一定要动手来写!
相关文章推荐
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [三] 模型配置方式实现爬虫
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [二] 基本使用
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析与配置系统
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [五] 如何做全站采集?
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
- 数据可视化 三步走(一):数据采集与存储,利用python爬虫框架scrapy爬取网络数据并存储
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [五] 如何做全站采集?
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [三] 配置式爬虫
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计 - ModestMT.Zou - 博客园
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [二] 最基本,最自由的使用方式
- 人人都会数据采集- Scrapy 爬虫框架入门
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
- ZK Web框架6.0发布:新型数据绑定系统
- web数据采集核心技术分享系列(二)如何提取信息?字符串?正则?xpath?xslt?自定义?...什么才是王道?
- http和https进行数据 采集使用.net类 httpwebrequest和httpwebresponse
- web数据采集核心技术分享系列(四)利用神经网络实现网页验证码破解
- web数据采集核心技术分享系列(三)如何破解验证码?图像分析?特征匹配?人工智能?第三方集成?...哪个最强大?