WebMagic爬虫入门教程(一)简介

 (一)前言

        工作学习中,需要进行爬虫。百度百科上说,网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

        网络爬虫,我是这样理解的,简单说,就是下载web网页上的html代码中的信息。

  那么到底用什么语言爬虫呢?python不太熟,不过听说很不错,自己也在网上下载了一个python爬取贴吧的代码,很是不错,很简洁,也很快,地址为:http://www.cnblogs.com/fnng/p/3576154.html。

不过python语言毕竟不太熟,虽然python爬虫网络功能强大,比较方便模拟登陆、以及解析javascript ,写起起程序来很是便捷,只有网页解析这个劣势,不过我还是没有用它。

我使用的是java语言来爬虫,初学者才开始学习,没有什么经验,也就没有使用httpclient这些工具直接url爬虫,而是使用了国内的开源爬虫框架webmagic框架来爬虫。

(二)简介

项目github地址https://github.com/yongzhuo/JavaLearning/tree/master/src/java/Webmagic

webmagic是一个国内的java开源爬虫框架,它采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化等),也支持多线程抓取、分布式抓取,并支持自动重试、自定义UA/cookie等功能。

对初学者而言,webmagic包含页面抽取功能,很方便使用,初学者可以使用css selector、xpath和正则表达式进行链接和内容的提取,支持多个选择器链式调用。

(三)webmagic的java爬虫

不废话了,直接上代码。

maven依赖:


    us.codecraft
    webmagic-core
    0.7.3


    us.codecraft
    webmagic-extension
    0.7.3


     java代码:

package Webmagic.donghua.dmzj.com;

/***Created by mo
 *On 2017/10/30  ***15:36.
 ******/
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Html;

public class DmzjProcessor implements PageProcessor {
    int myid = 0;
    int size =10;
    // 抓取网站的相关配置,可以包括编码、抓取间隔1s、重试次数等
    private Site site = Site.me().setCharset("utf8").setRetryTimes(1000).setSleepTime(1000);
    @Override
    public Site getSite() {
        return site;
    }

    @Override
    public void process(Page page) {
        Html html = page.getHtml();
        size++;
        String hahawebname = html.xpath("//div[@class=\"odd_anim_title_tnew\"]/div[@class=\"tvversion\"]/a/span[@class=\"anim_title_text\"]/h1/text()").get();//得分
        String goal = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"anim_score_info\"]/span[@class=\"points_text\"]/text()").get();//得分
        String mentotalold = html.xpath("//div[@class=\"anim_star\"]/ul/li[@id=\"score_statistics\"]/span[@id=\"score_count_span\"]/text()").get();//人数
        String mentotal = mentotalold.replaceAll("人评分","");
        String content = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescshort\"]/text()").get();//内容
        String contentdetail = html.xpath("//div[@class=\"odd_anim_title_mnew\"]/p/span[@id=\"gamedescall\"]/text()").get();//内容
        String url = "http://donghua.dmzj.com/donghua_info/"+size+".html";
        System.out.println("hahawebname: "+ hahawebname);
        System.out.println("goal: "+goal);
        System.out.println("mentotal: "+ mentotal);
        System.out.println("content: "+ content);
        System.out.println("url:  "+ url);
        System.out.println("contentdetail: "+ contentdetail);
}
    public static void main(String[] args) {
        int username = 10;
        DmzjProcessor my = new DmzjProcessor();
        long startTime, endTime;
        System.out.println("开始爬取...");
        for(;username<=15000;username++) {
            startTime = System.currentTimeMillis();
            Spider.create(my).addUrl("http://donghua.dmzj.com/donghua_info/" + username + ".html").thread(5).run();
            endTime = System.currentTimeMillis();
            System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒");
        }
    }
}

        运行的结果为:

WebMagic爬虫入门教程(一)简介_第1张图片
 

(四)过程:

(1)首先使用谷歌浏览器查看html网页,比若说打开:http://donghua.dmzj.com/donghua_info/10.html

WebMagic爬虫入门教程(一)简介_第2张图片

(2)查找我们想要获取的内容(比如说简介,动画名,制作公司什么的),一般情况下,首先找到我们想要查找的内容,选中点右键点检查,就会跳出如下图右边的一个框框,那里边有你想要的内容,找到不重复的标签就好。

WebMagic爬虫入门教程(一)简介_第3张图片

(3)编写正则语句就好。

 

希望对你有所帮助!

 

你可能感兴趣的:(Java爬虫,爬虫,webmagic,动漫之家,动漫网站爬虫,webmagic入门教程)