1. 程式人生 > >Java爬蟲框架 | 爬小說

Java爬蟲框架 | 爬小說

java爬蟲 bytes 關於 pub util ati document crawl IE

Jsoup,Java爬蟲解決方案,中文文檔:jsoup

不得不說Java的生態真的好,原來我以為爬蟲是只能用Pyhton來寫的,結果發現Java的爬蟲框架不要太多…… 一分鐘你就可以寫一個簡單爬蟲
WebMagic in Action

不過個人覺得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爬蟲框架 | 爬小說