Java實現網路爬蟲 案例程式碼:從網上獲取《三國演義》全文

新夢想IT發表於2022-09-22

Java實現網路爬蟲 案例程式碼:從網上獲取《三國演義》全文


案例2:從網上獲取《三國演義》全文


需求說明


搭建開發環境,實現《三國演義》全文儲存在本地


步驟分析


1、訪問網址:


2、分析網站URL、文件內容特徵


3、獲取網頁內容


4、拆分出需求內容


5、儲存在本地 D:\三國演義.txt



import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.URL;

import java.util.regex.Matcher;

import java.util.regex.Pattern;


public class NovelDemo {


/**

* 1、根據小說存放位置建立file物件

* 2、根據網頁結構編寫正則,建立pattern物件

* 3、編寫迴圈,建立向所有小說章節頁面發起網路請求的url物件

* 4、網路流BufferReader

* 5、建立輸入流

* 6、迴圈讀取請求得到的內容,使用正則匹配其中的內容

* 7、將讀取到的內容寫入本地檔案,知道迴圈結束

* 8、注意程式碼中的異常處理

*/


public static void main(String[] args) {

// 1、根據小說存放位置建立file物件

File file = new File("D:\\三國演義.txt");

if(!file.exists()){ //檔案不存在則建立該檔案

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

// 2、根據網頁結構編寫正則,建立pattern物件

String regex_content = "<p.*?>(.*?)</p>";

String regex_title = "<h1>(.*?)</h1>";

Pattern p_content = Pattern.compile(regex_content);

Pattern p_title = Pattern.compile(regex_title);

Matcher m_content;

Matcher m_title;

// 3、編寫迴圈,建立向所有小說章節頁面發起網路請求的url物件

for (int i = 1; i <= 120; i++) {

System.out.println("第" + i + "章開始下載。。。");

try {

// 建立每一個頁面的url物件

URL url = new URL(" + i + ".html");

// 建立網路讀取流

BufferedReader reader = new BufferedReader(

new InputStreamReader(url.openStream(), "utf8"));

// 4、讀取網路內容網路流BufferReader

String str = null;

// 5、建立輸入流

BufferedWriter writer = new BufferedWriter(

new OutputStreamWriter(new FileOutputStream(file, true)));

while ((str = reader.readLine()) != null) {

m_title = p_title.matcher(str.toString());

m_content = p_content.matcher(str.toString());

// 獲取小說標題並寫入本地檔案

Boolean isEx = m_title.find();

if (isEx) {

String title = m_title.group();

// 清洗得到的資料

title = title.replace("<h1>", "").replace( "</h1>", "");

System.out.println(title);

writer.write("第" + i + "章:" + title + "\n");

}

while (m_content.find()) {

String content = m_content.group();

// 清洗得到的資料

content = content.replace("<p>", "")

.replace("</p>", "")

.replace("&nbsp;", "")

.replace("?", "");

// 把小說內容寫入檔案

writer.write(content + "\n");

}

}

System.out.println("第" + i + "章下載完成.........");

writer.write("\n\n");

writer.close();

reader.close();

} catch (Exception e) {

System.out.println("下載失敗");

e.printStackTrace();

}

}

}

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2915834/,如需轉載,請註明出處,否則將追究法律責任。

相關文章