`
xiangdong_li
  • 浏览: 7399 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

webmagic

阅读更多
package com.yoyo.clourmovice;

import com.yoyo.clourmovice.pipeline.BugPagePipeLine;
import com.yoyo.clourmovice.pipeline.DownloadUriPipeLine;
import com.yoyo.clourmovice.processor.BugPageProcessor;
import com.yoyo.clourmovice.processor.DownloadUriProcessor;
import org.apache.commons.io.FileUtils;
import us.codecraft.webmagic.Spider;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;

public class ClourMoviceApplication{

    static String domain = "http://www.mmbabe.com/";


    private static void loadingPageUrl() {
        int pageSize = 1138;
        for (int index = 1; index <= pageSize; index++) {
            Spider.create(new BugPageProcessor())
                    .addUrl("http://www.mmbabe.com/forumdisplay.php?fid=41&page=" + index)
                    .addPipeline(new BugPagePipeLine())
                    .thread(5)
                    .run();
        }
    }


    public static void loadingDownloadURI() throws IOException {
        File file = FileUtils.getFile("list.txt");
        List<String> result = FileUtils.readLines(file, Charset.forName("utf-8"));
        result.forEach(uri -> {
            String newUri = domain + uri;
            System.out.println(newUri);
            Spider.create(new DownloadUriProcessor())
                    .addUrl(newUri)
                    .addPipeline(new DownloadUriPipeLine())
                    .thread(1)
                    .run();
            return;
        });
    }



    public static void main(String[] args) throws IOException {
        loadingPageUrl();
        System.out.println("-----------------download page success");
        loadingDownloadURI();
        System.out.println("-----------------download uri success");

    }

}

 

package com.yoyo.clourmovice.pipeline;

import org.apache.commons.io.FileUtils;
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @Author
 */
public class BugPagePipeLine implements Pipeline {

    public static File urlFile = FileUtils.getFile("list.txt");

    @Override
    public void process(ResultItems resultitems, Task task) {
        Map<String, Object> mapResults = resultitems.getAll();
        List<String> uris = (List<String>) mapResults.get("url");
        uris.forEach(uri -> {
            try {
                FileUtils.write(urlFile, uri + "\r\n", "utf-8", true);
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

}

 

 

package com.yoyo.clourmovice.pipeline;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @Author
 */
public class DownloadUriPipeLine implements Pipeline {

    public static File urlFile = FileUtils.getFile("uri.txt");


    @Override
    public void process(ResultItems resultItems, Task task) {
        Map<String, Object> mapResults = resultItems.getAll();
        List<String> uris = (List<String>) mapResults.get("url");
        if (CollectionUtils.isNotEmpty(uris)) {
            uris.forEach(uri -> {
                try {
                    FileUtils.write(urlFile, uri + "\r\n\n", "utf-8", true);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
    }
}

 

package com.yoyo.clourmovice.processor;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;

import java.util.List;

/**
 * @Author
 */
public class BugPageProcessor implements PageProcessor {

    private Site site = Site.me().setRetryTimes(3).setSleepTime(100)
            .setDomain("www.mmbabe.com");

    @Override
    public void process(Page page) {
        Selectable selectable = page.getHtml().xpath("/html/body/center/form/div/div/table/tbody/tr/td[3]/a[1]/@href");
        List<String> result = selectable.all();
        page.putField("url", result);
    }

    @Override
    public Site getSite() {
        site.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
        site.addHeader("Accept-Encoding", "gzip, deflate");
        site.addHeader("Accept-Language", "zh-CN,zh;q=0.9,zh-TW;q=0.8");
        site.addHeader("Cookie", "keep-alive");
        site.addHeader("Host", "www.mmbabe.com");
        site.addHeader("Upgrade-Insecure-Requests", "1");
        site.addHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36");
        site.addHeader("Cookie", "is_use_cookied=yes; is_use_cookiex=yes; cdb_cookietime=2592000; cdb_auth=seDLoqsSbCm%2Fmn%2FrjUbqSXTmIdwNBIcSgmvTCH8sUwMN1QywiXMDlZvFyNbJfTqwUA; cdb_sid=pV3tmY");
        return site;
    }
}

 

package com.yoyo.clourmovice.processor;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.helper.StringUtil;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author
 */
public class DownloadUriProcessor implements PageProcessor {

    private Site site = Site.me().setRetryTimes(3).setSleepTime(100)
            .setDomain("www.mmbabe.com");

    @Override
    public void process(Page page) {
        Selectable selectable = page.getHtml().xpath("/html/body/center/div[4]/form/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td/div[2]/text()");
        List<String> result = selectable.all();
        List<String> newResult = new ArrayList<>();
        for (String uri : result) {
            if (StringUtils.isNotBlank(uri)) {
                String[] uris = uri.split(" ");
                if (uris.length > 0) {
                    for (int index =0 ; index < uris.length; index++) {
                        String temp = uris[index];
                        if (temp.length() > 7 && temp.indexOf("thunder") >= 0) {
                            temp = temp.substring(temp.indexOf("thunder"));
                            newResult.add(temp);
                        }
                    }
                }
            }
        }

        if (CollectionUtils.isNotEmpty(newResult)) {
            System.out.println("\t" + newResult);
            page.putField("url", newResult);
        }
    }

    @Override
    public Site getSite() {
        site.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
        site.addHeader("Accept-Encoding", "gzip, deflate");
        site.addHeader("Accept-Language", "zh-CN,zh;q=0.9,zh-TW;q=0.8");
        site.addHeader("Cookie", "keep-alive");
        site.addHeader("Host", "www.mmbabe.com");
        site.addHeader("Upgrade-Insecure-Requests", "1");
        site.addHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36");
        site.addHeader("Cookie", "is_use_cookied=yes; is_use_cookiex=yes; cdb_cookietime=2592000; cdb_auth=seDLoqsSbCm%2Fmn%2FrjUbqSXTmIdwNBIcSgmvTCH8sUwMN1QywiXMDlZvFyNbJfTqwUA; cdb_sid=pV3tmY");
        return site;
    }
}

 

分享到:
评论

相关推荐

    java爬虫webmagic抓取静态页面demo

    Java爬虫WebMagic是开发者常用来抓取网页数据的一个强大工具,尤其对于处理静态页面,它的易用性和灵活性使得在Java开发环境中非常受欢迎。WebMagic的设计理念是模块化,这使得我们可以灵活地组合各个组件来实现不同...

    springboot 集成webmagic实现网页数据爬取功能

    SpringBoot集成WebMagic实现网页数据爬取功能是一个常见的实践,特别是在大数据分析、信息抓取以及自动化测试等领域。这个项目提供了一个可以直接使用的示例工程,帮助开发者快速理解和应用爬虫技术。 1. **...

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

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

    webmagic源码

    WebMagic是一个开源的Java爬虫框架,其设计目标是简化爬虫开发,让开发者能够快速构建自己的网络抓取项目。这个框架的核心在于模块化的设计,它将爬虫分为四个主要部分:`PageFetcher`(页面获取)、`HtmlParser`...

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

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

    基于webmagic的网络爬虫入门demo

    **基于WebMagic的网络爬虫入门** WebMagic是一个开源的Java爬虫框架,设计目标是简单易用,可扩展性强。本教程将引导你通过一个简单的示例了解如何使用WebMagic进行网页抓取。 **一、WebMagic简介** WebMagic是由...

    最新Java WebMagic爬虫教程

    Java WebMagic是一个强大的开源Web爬虫框架,专为简化网页抓取而设计。它提供了简单易用的API,使得开发者可以快速地构建自己的网络爬虫项目。本教程将涵盖使用WebMagic进行爬虫开发的基本步骤,同时也会涉及...

    webmagic-0.7.3.zip

    【webmagic-0.7.3.zip】是一个包含webmagic框架所需组件的压缩包,它是一个开源的Java爬虫框架,旨在简化网络抓取过程,让开发者能够更快速地实现自己的爬虫项目。该框架的核心设计理念是模块化,使得各个部分如页面...

    webmagic的所有jar包

    WebMagic是一个开源的Java爬虫框架,它设计简洁、易扩展,使得开发者能够快速地构建自己的网络爬虫项目。在0.6.0版本中,WebMagic提供了丰富的jar包来支持其核心功能和各种扩展。以下是对这些jar包及其包含的知识点...

    webmagic0.5.2.rar

    WebMagic是一个开源的Java爬虫框架,它设计的目标是简化网页抓取的流程,让开发者能够更专注于数据的提取和处理。在"webmagic0.5.2.rar"这个压缩包中,包含了WebMagic框架0.5.2版本的所有依赖JAR文件,这样即使不...

    Webmagic爬取数据导入到ES

    Webmagic是一个强大的、轻量级的Java爬虫框架,它使得开发者能够轻松地实现网页抓取和内容处理。本文将详细探讨如何利用Webmagic爬取数据,并将其导入到Elasticsearch(ES)5.x版本中。 首先,让我们了解Webmagic的...

    webmagic相关jar包

    WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建自己的网络爬虫程序。它设计简洁、易于理解和扩展,适合个人开发者或者团队进行数据抓取任务。在提供的压缩包文件"lib2"中,很可能包含了WebMagic项目运行所...

    webmagic所有依赖的jar包

    WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建网络爬虫。它具有模块化设计,易于扩展,能够帮助开发者高效地抓取网页内容并进行解析。在这个压缩包中,"webmagic所有依赖的jar包"包含了运行WebMagic项目...

    webmagic-core0.7.3.zip

    WebMagic是一个强大的、开源的Java爬虫框架,它设计简洁,易于扩展,使得开发者能够快速构建自己的网络爬虫项目。然而,在默认配置下,WebMagic可能无法处理使用HTTPS协议的网址,这在处理需要安全连接的网站时会...

    webmagic0.7.3源码和jar包

    WebMagic是一个强大的Java爬虫框架,它简化了网络数据抓取的过程,使开发者可以更专注于爬虫业务逻辑的实现。这个资源包含WebMagic的0.7.3版本的源码和对应的jar包,适合对爬虫开发有兴趣或者需要深度定制WebMagic...

    基于WebMagic框架的依赖jar包

    WebMagic是一个开源的Java爬虫框架,它设计的目标是简化爬虫的开发,让你能够快速地构建自己的网络抓取项目。这个压缩包包含了基于WebMagic框架的全部依赖jar包,这意味着你无需逐一安装和配置各个组件,只需下载...

    WebMagic(Java)简单爬虫实现,实现抓取数据,并导出到excel文件

    WebMagic是一个开源的Java爬虫框架,它设计简洁、易于扩展,特别适合快速开发和构建自己的网络爬虫项目。在本教程中,我们将探讨如何使用WebMagic来抓取网页数据并将其导出到Excel文件中。 首先,让我们了解...

    webmagic_Demo.rar

    WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建网络爬虫。在这个名为"webmagic_Demo.rar"的压缩包中,我们有一个演示项目,可以帮助你了解如何使用WebMagic来抓取中关村手机评测网站上的手机信息。下面将...

Global site tag (gtag.js) - Google Analytics