专业的JAVA编程教程与资源

网站首页 > java教程 正文

敢相信么?其实Java也可以写爬虫了?

temp10 2025-01-31 15:25:26 java教程 16 ℃ 0 评论

相信很多人对于爬虫应该不陌生,爬虫在大多数情况下可以帮助用户完成很多的自动化的操作,极大的提升了人工的效率。

当然目前市面上很多的爬虫都是使用Python语言开发的,但是作为一个Java程序员,我们怎么可以甘于人后呢?我们知道其实编程语言都是一样的,只是在某些领域中可能性能会更好一些。但是归根究底,Python语言可以完成的工作Java语言其实也可以完成的。下面我们就来为大家介绍两种Java环境下的爬虫方案。

敢相信么?其实Java也可以写爬虫了?

Webmagic

在传统的Java解决方案中,通常使用的是JSONP的方式来进行爬虫,但是这里我们要介绍的就是下面这个框架。

http://webmagic.io/

中文文档链接:
http://webmagic.io/docs/zh/

源码地址链接:
https://github.com/code4craft/webmagic

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

它参考了比较成熟的Scrapy框架,使用了HttpClient、Jsoup等一些比较成熟的经过了Java程序验证的工具。可以基于微内核和高可用进行扩展。它提供了四大基础组件

  • DownLoader:负责从互联网上下载页面,以便后续处理
  • PageProcesser:负责解析页面,抽取有用信息,以及发现新的链接。
  • Scheduler:负责管理待抓取的URL,以及一些去重的工作
  • Pipeline:负责抽取结果的处理,包括计算、持久化到文件、数据库等。

WebMagic 整体架构如下。

通过Spider来启动项目并且来管理四大组件的整合。使用方式也比较简单,在POM中引入对应的依赖即可


    us.codecraft
    webmagic-core
    0.7.3


    us.codecraft
    webmagic-extension
    0.7.3

因为这其中引入了日志处理的实现,所以需要再使用的时候排除对应的日志依赖。如下所示。


    us.codecraft
    webmagic-extension
    0.7.3
    
        
            org.slf4j
            slf4j-log4j12
        
    

这样就将webmagic引入到我们的项目中,编写如下的代码我们就可以运行第一个Java爬虫项目了

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

public class GithubRepoPageProcessor implements PageProcessor {

    private Site site = Site.me().setRetryTimes(3).setSleepTime(100);

    @Override
    public void process(Page page) {
        page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());
        page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
        page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString());
        if (page.getResultItems().get("name")==null){
            //skip this page
            page.setSkip(true);
        }
        page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new GithubRepoPageProcessor()).addUrl("https://github.com/code4craft").thread(5).run();
    }
}

总结

上面我们介绍了Webmagic爬虫框架,后续,我们还会继续介绍关于它的使用,并且还带着大家一起去解析一些爬虫网站。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表