`
香煎马鲛鱼
  • 浏览: 109839 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

webmagic——魔法般的爬虫框架

 
阅读更多

webMagic

 

是一个非常不错的开发框架。简单易学,只要会java就可以很轻松上手;

首先我先分享一下我学习时所使用资料:

1、http://webmagic.io/(非常好的文档,里面的代码都可以跑,而且还在更新,建议收藏)

2、http://juvenshun.iteye.com/blog/269094(介绍maven建议先装好)

3、http://my.oschina.net/huangyong/blog/200075(介绍git的)

关于编译器:

推荐大家用idea;非常好用(idea+maven+git会极大地减少你的开发时间)

我将网上的文档整理了一下。大家可以看看,希望对大家有用哦

WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)



 

 

1.Downloader

Downloader负责从互联网上下载页面.

2.PageProcessor

PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。

3.Scheduler

Scheduler负责管理待抓取的URL,以及一些去重的工作。

4.Pipeline

Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库

1.2.2 用于数据流转的对象

1. Request

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

2. Page

Page代表了从Downloader下载到的一个页面——可能是HTML

3. ReusltItems

ReusltItems相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。

1.2.3 控制爬虫运转的引擎--Spider

Downloader、PageProcessor、Scheduler、Pipeline都是Spider的一个属性

Spider是WebMagic内部流程的核心。

包括:它封装了爬虫的创建、启动、停止、多线程等功能

 

1.2.4 快速上手

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

 

项目组成

1.3.1 主要部分

webmagic-core

webmagic-core是WebMagic核心部分,只包含爬虫基本模块和基本抽取器。

webmagic-extension

webmagic-extension是WebMagic的主要扩展模块,提供一些更方便的编写爬虫的工具。

 

快速开始

2.1 使用Maven

WebMagic基于Maven进行构建,推荐使用Maven来安装WebMagic。

3.1 下载源码

WebMagic目前有两个仓库:

· https://github.com/code4craft/webmagic

github上的仓库保存最新版本

· http://git.oschina.net/flashsword20/webmagic

此仓库包含所有编译好的依赖包,只保存项目的稳定版本

无论在哪个仓库,使用

git clone https://github.com/code4craft/webmagic.git

git clone http://git.oschina.net/flashsword20/webmagic.git

即可下载最新代码。

TargetUrl中的自定义正则表达式

这里我们使用的是正则表达式来规定URL范围。可能细心的朋友,会知道.是正则表达式的保留字符,那么这里是不是写错了呢?其实是这里为了方便,WebMagic自己定制的适合URL的正则表达式,主要由两点改动:

· 将URL中常用的字符.默认做了转义,变成了\.

· 将"*"替换成了".*",直接使用可表示通配符。

例如,https://github.com/*在这里是一个合法的表达式,它表示https://github.com/下的所有URL。

在WebMagic中,从TargetUrl页面得到的URL,只要符合TargetUrl的格式,也是会被下载的。所以即使不指定HelpUrl也是可以的——例如某些博客页总会有“下一篇”链接,这种情况下无需指定HelpUrl。

Pileline

Pileline是抽取结束后,进行处理的部分,它主要用于抽取结果的保存,也可以定制Pileline可以实现一些通用的功能。

代码实例

新建工程:

 



 下一步:

 



 1、2项为必填,可以自定义;

GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
一般GroupID就是填com.leafive.test这样子。

项目生成后,目录结构为:

 




 
 J
ava_s为自己创建的;新建项目时,resources目录需要自己建(竟然没有自动生成)

我们在java下新建一个packagejava_s,接着新建一个类;把代码写上;

package java_s;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.model.ConsolePageModelPipeline;

import us.codecraft.webmagic.model.OOSpider;

import us.codecraft.webmagic.model.annotation.ExtractBy;

import us.codecraft.webmagic.model.annotation.ExtractByUrl;

import us.codecraft.webmagic.model.annotation.HelpUrl;

import us.codecraft.webmagic.model.annotation.TargetUrl;

 

@TargetUrl("https://github.com/\\w+/\\w+")

@HelpUrl("https://github.com/\\w+")

public class GithubRepo {

 

    @ExtractBy(value = "//h1[@class='entry-title public']/strong/a/text()", notNull = true)

    private String name;

 

    @ExtractByUrl("https://github\\.com/(\\w+)/.*")

    private String author;

 

    @ExtractBy("//div[@id='readme']/tidyText()")

    private String readme;

 

    public static void main(String[] args) {

        OOSpider.create(Site.me().setSleepTime(1000)

                , new ConsolePageModelPipeline(), GithubRepo.class)

                .addUrl("https://github.com/code4craft").thread(5).run();

    }

}

当然,还有pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

 

    <groupId>spider_Demo</groupId>

    <artifactId>spider_Demo</artifactId>

    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>

            <groupId>us.codecraft</groupId>

            <artifactId>webmagic-extension</artifactId>

            <version>0.5.1</version>

            <exclusions>

                <exclusion>

                    <groupId>org.slf4j</groupId>

                    <artifactId>slf4j-log4j12</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

    </dependencies>

 

</project>

这里我们使用了webmagic包:

            <groupId>us.codecraft</groupId>

            <artifactId>webmagic-extension</artifactId>

 <version>0.5.1</version>

如果需要引用其他的包,需要在网上搜索他的groupidartfactidversion

最后单击工程右键——maven——reimport等它import结束就可以了

单机class右键选择run即可;

问题:

 



 出现错误:有些包没导入;

解决方法:选中报错字段,出现蓝色提示框后安Alt+Enter,编译器自动import

<!--EndFragment-->
  • 大小: 233.5 KB
  • 大小: 80.6 KB
  • 大小: 4.5 KB
  • 大小: 15.1 KB
  • 大小: 34.3 KB
分享到:
评论

相关推荐

    spring boot 整合爬虫框架webmagic,并将数据存储到数据库

    Spring Boot 整合爬虫框架WebMagic并存储数据到数据库是一项常见的数据抓取与处理任务。WebMagic是一个轻量级的Java爬虫框架,而Spring Boot则是流行的微服务开发框架,两者结合能方便地构建高效稳定的爬虫服务。...

    WebMagic--Java爬虫框架学习.zip

    反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等...

    基于webmagic的可配置爬虫.zip

    【标题】: "基于WebMagic的可配置爬虫" 指的是使用WebMagic这个开源Java爬虫框架来创建一个可以灵活配置的网络爬虫项目。WebMagic是一个轻量级、模块化的爬虫框架,它使得开发者能够快速构建自己的网络爬虫应用。 ...

    webmagic-Java爬虫框架

    webmagic:一个可扩展的Java爬虫框架,架构类似Python的Scrapy。

    (源码)基于SSM框架和WebMagic的豆瓣电子书爬虫系统.zip

    # 基于SSM框架和WebMagic的豆瓣电子书爬虫系统 ## 项目简介 本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和WebMagic爬虫框架的豆瓣电子书爬虫系统。项目的主要目的是从豆瓣网站爬取电子书的相关信息,并...

    爬虫框架,WebMagic,依赖包下载

    WebMagic是一个开源的Java爬虫框架,专为高效、易用和可扩展性而设计。在深入了解WebMagic之前,我们先来谈谈爬虫的基本概念。爬虫,也称为网络爬虫或网页蜘蛛,是一种自动抓取互联网信息的程序。它们通过模拟用户...

    WebMagic(Java爬虫框架) v0.7.2

    WebMagic是一个专为Java开发者设计的爬虫框架,版本号为v0.7.2。这个框架具有高度的模块化,使得开发人员可以方便地构建自己的网络数据抓取项目。在深入探讨WebMagic之前,先要理解爬虫的基本概念:爬虫是一种自动化...

    WebMagic (Java爬虫框架).zip

    WebMagic是一个用Java编写的开放源代码爬虫框架,它为开发者提供了强大的工具来抓取网页内容并进行处理。这个框架的设计目标是简化网络爬虫的开发过程,使得程序员能够快速构建自己的爬虫项目,而不需要过于关注底层...

    基于java的开发源码-WebMagic (Java爬虫框架).zip

    WebMagic是一个开源的Java爬虫框架,其设计目标是简化网页抓取的复杂度,让开发者可以更加专注于数据提取和业务逻辑。这个压缩包中包含了WebMagic的源代码,可以帮助我们深入了解其工作原理和实现机制。 WebMagic的...

    webmagicx一款基于webmagic的可配置化的爬虫框架

    webmagicx是一款可配置爬虫框架,webmagicx中的webmagic表示该框架扩展于webmagic,x表示该框架是一个基于xml的配置型爬虫框架。无需写任何代码,只需你熟悉正则表达式和xpath,通过简单的配置便可实现一个爬虫。...

    基于WebMagic开发的完整的分布式爬虫框架

    基于WebMagic开发的完整的分布式爬虫框架,该框架特点如下: 1、完全分布式:由管理端(Admin)、调度端(Master)和多个Worker组成,各个组件通过Http协议通信。 2、完全配置化:通过Admin端的页面配置规则就可以...

    基于java的一款webmagic开源的Java垂直爬虫框架

    webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发 webmagic的核心 webmagic的主要特色: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部流程,灵活...

    java爬虫项目,webmagic源码 java开发爬虫项目

    Java爬虫项目是利用编程语言来自动化收集互联网信息的一种技术,WebMagic是一个开源的Java爬虫框架,专注于简单、快速地实现网页数据抓取。在这个项目中,我们主要探讨WebMagic的源码以及如何利用Java进行爬虫开发。...

    基于Java的WebMagic爬虫框架设计源码

    本项目是基于Java的WebMagic爬虫框架设计源码,包含291个文件,其中主要包含233个java源代码文件,18个xml配置文件等。系统采用了Java、HTML、JavaScript、Ruby、Python、Shell和Kotlin技术,实现了WebMagic爬虫框架...

    基于webmagic的Java爬虫应用.zip

    网络搬运工webporter 是一个基于webmagic的垂直爬虫框架的 Java 爬虫应用程序,旨在提供一套完整的数据爬虫、持久化存储和可视化展示的样例实践示例。webporter寓意“我们不是生产数据,我们只是互联网的搬运工”...

    基于WebMagic封装的垂直爬虫高分项目+详细文档+全部资料.zip

    基于WebMagic封装的垂直爬虫高分项目+详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,...

    webporter 是一个基于垂直爬虫框架 webmagic 的 Java 爬虫应用,旨在提供一套完整的数据爬取,持久化存储和可

    webporter 是一个基于垂直爬虫框架 webmagic 的 Java 爬虫应用,旨在提供一套完整的数据爬取,持久化存储和可视化展示的实践样例。 webporter 寓意“我们不生产数据,我们只是互联网的搬运工~” 如果觉得不错,请...

Global site tag (gtag.js) - Google Analytics