Java爬虫框架 | 爬小说
Jsoup,Java爬虫解决方案,中文文档:jsoup
不过个人觉得Jsoup最好用,最直接也很简单
写了一个Demo,爬取笔趣网的小说,格式已过滤。
public class CrawlText {
    /***
     * 获取文本
     *
     * @param autoDownloadFile
     *            自动下载文件
     * @param Multithreading
     *            多线程 默认false
     * @param Url
     *            网站链接
     * @throws IOException
     */
    public static void getText(boolean autoDownloadFile, boolean Multithreading, String Url) throws IOException {
        String rule = "abs:href";
        List<String> urlList = new ArrayList<String>();
        Document document = Jsoup.connect(Url)
                .timeout(4000)
                .ignoreContentType(true)
                .userAgent("Mozilla\" to \"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0)")
                .get();
        System.out.println(document.toString());
        Elements urlNode = document.select("a[href$=.html]");
        for (Element element : urlNode) {
            urlList.add(element.attr(rule));
        }
        CrawTextThread crawTextThread = new CrawTextThread(urlList);
        crawTextThread.start();
    }
}
package xyz.yangchaojie.JSOUP.service; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.List; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; public class CrawTextThread extends Thread { List<String> UrlList; public CrawTextThread(List<String> urlList) {
this.UrlList = urlList;
} String rule = "";
String rule_title = "h1";
String rule_content = "content"; public static String PATH = "D:\\JSOUP\\"; /**
* 创建文件
*
* @param fileName
* @return
*/
public static void createFile(File fileName) throws Exception {
try {
if (!fileName.exists()) {
fileName.createNewFile();
}
} catch (Exception e) {
e.printStackTrace();
} } public static void writeTxtFile(String content, File fileName) throws Exception {
RandomAccessFile mm = null;
FileOutputStream o = null;
try {
o = new FileOutputStream(fileName);
o.write(content.getBytes("UTF-8"));
o.close();
} catch (Exception e) { e.printStackTrace();
} finally {
if (mm != null) {
mm.close();
}
}
} @Override
public void run() {
currentThread().setName("一个都别跑:"); String title; String content; for (String url : UrlList) {
try { Document document = Jsoup.connect(url).timeout(6000).get();
title = document.select("h1").toString();
content = document.select("#content").html(); System.out.println("线程:"+currentThread().getName()+"爬取URL—>"+url);
File file = new File(PATH+title.replaceAll("<h1>", "").replaceAll("</h1>", "")+".txt");
createFile(file);
System.out.println("创建文件:"+file.getPath());
writeTxtFile(FileterHtml(content), file); } catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} } public static String FileterHtml(String str) {
return str.replaceAll(" ", "").replaceAll("<br>", "\r\n"); }
}
public static void main( String[] args )
{
try {
CrawlText.getText(true, true, "http://www.biquge.com.tw/0_66/");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
RUN:
创建文件:D:\JSOUP\ 关于新书的种种,在此一并交代.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83312.html
创建文件:D:\JSOUP\ 第一章 失意相公.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83313.html
创建文件:D:\JSOUP\ 第二章 吊颈秀才.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83314.html
创建文件:D:\JSOUP\ 第三章 秦氏族叔.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83315.html
创建文件:D:\JSOUP\ 第四章 无妄之灾.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83316.html
创建文件:D:\JSOUP\ 第五章 游衙惊梦.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83317.html
创建文件:D:\JSOUP\ 第六章 运蹇时乖.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83318.html
创建文件:D:\JSOUP\ 第七章 白手起家(上).txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83319.html
创建文件:D:\JSOUP\ 第八章 白手起家(下).txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83320.html
创建文件:D:\JSOUP\ 第九章 江南才子.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83321.html
创建文件:D:\JSOUP\ 第十章 才子招财.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83322.html
创建文件:D:\JSOUP\ 第十一章 风靡江南.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83323.html
创建文件:D:\JSOUP\ 第十二章 原形毕露.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83324.html
创建文件:D:\JSOUP\ 第十三章 杜家危局.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83325.html
创建文件:D:\JSOUP\ 第十四章 流年不利.txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83326.html
创建文件:D:\JSOUP\ 第十五章 化解危局(上).txt
线程:一个都别跑:爬取URL—>http://www.biquge.com.tw/0_66/83327.html
创建文件:D:\JSOUP\ 第十六章 化解危局(中).txt
Java爬虫框架 | 爬小说的更多相关文章
- Java爬虫框架之WebMagic
		一.介绍 WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 二.如何学习 1.查看官网 官网地址为:http://webmagic.io ... 
- java爬虫框架jsoup
		1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/ 
- Java爬虫一键爬取结果并保存为Excel
		Java爬虫一键爬取结果并保存为Excel 将爬取结果保存为一个Excel表格 官方没有给出导出Excel 的教程 这里我就发一个导出为Excel的教程 导包 因为个人爱好 我喜欢用Gradle所以这 ... 
- JAVA 爬虫框架webmagic 初步使用Demo
		一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ... 
- Java爬虫框架WebMagic——入门(爬取列表类网站文章)
		初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ... 
- Java爬虫框架WebMagic入门——爬取列表类网站文章
		初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ... 
- Java爬虫框架调研
		Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架). 除了Python,Java中也有许多爬虫框架. nutch apache下的开源爬虫程 ... 
- 学习scrapy框架爬小说
		一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ... 
- Java爬虫框架Jsoup学习记录
		Jsoup的作用 当你想获得某网页的内容,可以使用此框架做个爬虫程序,爬某图片网站的图片(先获得图片地址,之后再借助其他工具下载图片)或者是小说网站的小说内容 我使用Jsoup写出的一款小说下载器,小 ... 
随机推荐
- K8s集群部署(三)------ Node节点部署
			之前的docker和etcd已经部署好了,现在node节点要部署二个服务:kubelet.kube-proxy. 部署kubelet(Master 节点操作) 1.二进制包准备 [root@k8s-m ... 
- GBDT--原来是这么回事(附代码)
			1. 解释一下GBDT算法的过程 GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想. 1.1 Boosting思想 Bo ... 
- 微服务-springboot热部署
			spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. IDEA进行热 ... 
- scrapy基础知识之制作 Scrapy 爬虫 一共需要4步:
			1.新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 2.明确目标 (编写items.py):明确你想要抓取的目标 3.制作爬虫 (spiders/xxspider. ... 
- struts2入门Demo
			一.引入必要的jar包,所需jar包如下: 二.配置web.xml.主要目的是拦截请求 <?xml version="1.0" encoding="UTF-8&qu ... 
- mplayer+ffmpeg 组合截图
			mplayer截图的优点:对于一个时长很长的视频,可以任意指定一个时间点截图,mplayer会直接跳到这个时间点开始解码截图: 缺点:由于是直接跳到指定的时间点,也就是直接跳过了之前的帧,这样解码出来 ... 
- 云开发新能力,支持 HTTP 调用 API
			今天来上班打开电脑,总感觉微信开发文档哪里有点不太一样,研究了半天原来是云开发又多了神级功能--HTTP API! HTTP API是什么?简单来说就是通过云开发HTTP API,可以不需要通过微信小 ... 
- nu.xom:Attribute
			Attribute: 机翻 Attribute copy():生成一份当前Attribute的拷贝,但是它没有依附任何Element Node getChild(int position) :因为At ... 
- Java编程思想:序列化基础部分
			import java.io.*; import java.util.Date; import java.util.Random; public class Test { public static ... 
- 单元测试jest部署
			引入jest需安装的基础插件: 基础插件 @babel/core 编译工具核心模块包 @babel/preset-env 编译工具,支持es2015特性的编译打包工具包 babel-jest 对.js ... 
