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是开发者常用来抓取网页数据的一个强大工具,尤其对于处理静态页面,它的易用性和灵活性使得在Java开发环境中非常受欢迎。WebMagic的设计理念是模块化,这使得我们可以灵活地组合各个组件来实现不同...
SpringBoot集成WebMagic实现网页数据爬取功能是一个常见的实践,特别是在大数据分析、信息抓取以及自动化测试等领域。这个项目提供了一个可以直接使用的示例工程,帮助开发者快速理解和应用爬虫技术。 1. **...
Spring Boot 整合爬虫框架WebMagic并存储数据到数据库是一项常见的数据抓取与处理任务。WebMagic是一个轻量级的Java爬虫框架,而Spring Boot则是流行的微服务开发框架,两者结合能方便地构建高效稳定的爬虫服务。...
WebMagic是一个开源的Java爬虫框架,其设计目标是简化爬虫开发,让开发者能够快速构建自己的网络抓取项目。这个框架的核心在于模块化的设计,它将爬虫分为四个主要部分:`PageFetcher`(页面获取)、`HtmlParser`...
WebMagic是一个开源的Java爬虫框架,专为高效、易用和可扩展性而设计。在深入了解WebMagic之前,我们先来谈谈爬虫的基本概念。爬虫,也称为网络爬虫或网页蜘蛛,是一种自动抓取互联网信息的程序。它们通过模拟用户...
**基于WebMagic的网络爬虫入门** WebMagic是一个开源的Java爬虫框架,设计目标是简单易用,可扩展性强。本教程将引导你通过一个简单的示例了解如何使用WebMagic进行网页抓取。 **一、WebMagic简介** WebMagic是由...
Java WebMagic是一个强大的开源Web爬虫框架,专为简化网页抓取而设计。它提供了简单易用的API,使得开发者可以快速地构建自己的网络爬虫项目。本教程将涵盖使用WebMagic进行爬虫开发的基本步骤,同时也会涉及...
【webmagic-0.7.3.zip】是一个包含webmagic框架所需组件的压缩包,它是一个开源的Java爬虫框架,旨在简化网络抓取过程,让开发者能够更快速地实现自己的爬虫项目。该框架的核心设计理念是模块化,使得各个部分如页面...
WebMagic是一个开源的Java爬虫框架,它设计简洁、易扩展,使得开发者能够快速地构建自己的网络爬虫项目。在0.6.0版本中,WebMagic提供了丰富的jar包来支持其核心功能和各种扩展。以下是对这些jar包及其包含的知识点...
WebMagic是一个开源的Java爬虫框架,它设计的目标是简化网页抓取的流程,让开发者能够更专注于数据的提取和处理。在"webmagic0.5.2.rar"这个压缩包中,包含了WebMagic框架0.5.2版本的所有依赖JAR文件,这样即使不...
Webmagic是一个强大的、轻量级的Java爬虫框架,它使得开发者能够轻松地实现网页抓取和内容处理。本文将详细探讨如何利用Webmagic爬取数据,并将其导入到Elasticsearch(ES)5.x版本中。 首先,让我们了解Webmagic的...
WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建自己的网络爬虫程序。它设计简洁、易于理解和扩展,适合个人开发者或者团队进行数据抓取任务。在提供的压缩包文件"lib2"中,很可能包含了WebMagic项目运行所...
WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建网络爬虫。它具有模块化设计,易于扩展,能够帮助开发者高效地抓取网页内容并进行解析。在这个压缩包中,"webmagic所有依赖的jar包"包含了运行WebMagic项目...
WebMagic是一个强大的、开源的Java爬虫框架,它设计简洁,易于扩展,使得开发者能够快速构建自己的网络爬虫项目。然而,在默认配置下,WebMagic可能无法处理使用HTTPS协议的网址,这在处理需要安全连接的网站时会...
WebMagic是一个强大的Java爬虫框架,它简化了网络数据抓取的过程,使开发者可以更专注于爬虫业务逻辑的实现。这个资源包含WebMagic的0.7.3版本的源码和对应的jar包,适合对爬虫开发有兴趣或者需要深度定制WebMagic...
WebMagic是一个开源的Java爬虫框架,它设计的目标是简化爬虫的开发,让你能够快速地构建自己的网络抓取项目。这个压缩包包含了基于WebMagic框架的全部依赖jar包,这意味着你无需逐一安装和配置各个组件,只需下载...
WebMagic是一个开源的Java爬虫框架,它设计简洁、易于扩展,特别适合快速开发和构建自己的网络爬虫项目。在本教程中,我们将探讨如何使用WebMagic来抓取网页数据并将其导出到Excel文件中。 首先,让我们了解...
WebMagic是一个开源的Java爬虫框架,用于快速、灵活地构建网络爬虫。在这个名为"webmagic_Demo.rar"的压缩包中,我们有一个演示项目,可以帮助你了解如何使用WebMagic来抓取中关村手机评测网站上的手机信息。下面将...