Jsoup,Java爬虫解决方案,中文文档:jsoup

  不得不说Java的生态真的好,原来我以为爬虫是只能用Pyhton来写的,结果发现Java的爬虫框架不要太多……
 
 
   

不过个人觉得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爬虫框架 | 爬小说的更多相关文章

  1. Java爬虫框架之WebMagic

    一.介绍 WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 二.如何学习 1.查看官网 官网地址为:http://webmagic.io ...

  2. java爬虫框架jsoup

    1.java爬虫框架的api jsoup:https://www.open-open.com/jsoup/

  3. Java爬虫一键爬取结果并保存为Excel

    Java爬虫一键爬取结果并保存为Excel 将爬取结果保存为一个Excel表格 官方没有给出导出Excel 的教程 这里我就发一个导出为Excel的教程 导包 因为个人爱好 我喜欢用Gradle所以这 ...

  4. JAVA 爬虫框架webmagic 初步使用Demo

    一想到做爬虫大家第一个想到的语言一定是python,毕竟python比方便,而且最近也非常的火爆,但是python有一个全局锁的概念新能有瓶颈,所以用java还是比较牛逼的, webmagic 官网 ...

  5. Java爬虫框架WebMagic——入门(爬取列表类网站文章)

    初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...

  6. Java爬虫框架WebMagic入门——爬取列表类网站文章

    初学爬虫,WebMagic作为一个Java开发的爬虫框架很容易上手,下面就通过一个简单的小例子来看一下. WebMagic框架简介 WebMagic框架包含四个组件,PageProcessor.Sch ...

  7. Java爬虫框架调研

    Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架). 除了Python,Java中也有许多爬虫框架. nutch apache下的开源爬虫程 ...

  8. 学习scrapy框架爬小说

    一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ...

  9. Java爬虫框架Jsoup学习记录

    Jsoup的作用 当你想获得某网页的内容,可以使用此框架做个爬虫程序,爬某图片网站的图片(先获得图片地址,之后再借助其他工具下载图片)或者是小说网站的小说内容 我使用Jsoup写出的一款小说下载器,小 ...

随机推荐

  1. appium adb端口被占用问题

    1.netstat -ano | findstr "5037" 2.查看进程  看看哪个占用端口了 结束进程 adb devices 提示  ...ack  问题解决 新建一个环境 ...

  2. Linux 勿卸载软件,所有命令不能用了咋办

    1. 一次有趣的事 有个做技术的(不说什么岗位,容易被人喷,谁都有失手的时候),在公司的业务测试环境的机器,卸载了一个软件rpm -e --nodeps filesystem* , 导致机器所有的命令 ...

  3. scrapy基础知识之 关于爬虫部分一些建议:

    1.尽量减少请求次数,能抓列表页就不抓详情页,减轻服务器压力,程序员都是混口饭吃不容易. 2.不要只看 Web 网站,还有手机 App 和 H5,这样的反爬虫措施一般比较少. 3.实际应用时候,一般防 ...

  4. 你必须了解的java内存管理机制(四)-垃圾回收

    本文在个人技术博客不同步发布,详情可用力戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 相关链接(注:文章讲解JVM以Hotspot虚拟机为例,jdk版本为1.8) ...

  5. 关系型数据库MySql简介

    什么是关系型数据库? 数据库就是用来存储数据的仓库,是一种特殊的文件. 根据存储的数据不同,划分为关系型数据库和非关系型数据库. 关系型数据库就是指 建立在关系模型基础上的数据库,通俗来讲这种数据库就 ...

  6. NOIP 2004 虫食算题解

    问题 E: [Noip2004]虫食算 时间限制: 1 Sec  内存限制: 128 MB 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一 ...

  7. Windows 10打开远程桌面的方法

    今天使用windows 10,想要用远程桌面连接,可是怎么都找不到,哎,win10相比于win7和XP系统,感觉还是有点使用不习惯.不过后来还是找到了两个方法,在此记录下来,分享给需要的朋友. 1. ...

  8. WinForm控件之【Button】

    基本介绍 普通按钮大部分情况下用作页面对某系列操作后的提交确认,应用较为广泛,在winfrom控件当中使用设置都相对的简单. 常设置属性.事件 Image:控件上显示的图片: Enabled  :指示 ...

  9. Gym - 101194L World Cup 暴力

    World CupInput file: Standard InputOutput file: Standard OuptutTime limit: 1 second Here is World Cu ...

  10. idea 警告:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

    在pom.xml文件中添加 <properties>         <maven.compiler.source>1.8</maven.compiler.source& ...