Java原生代码实现爬虫(爬取小说)

liftword1个月前 (03-24)技术文章6

Java也能做爬虫。

现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择,Java成熟的爬虫框架很多,下面给大家展示一个使用Java基础语言编写的爬取小说的案例:

实现功能:

爬取目标网站全本小说

代码编写环境:

JDK:1.8.0_191

Eclipse:2019-03 (4.11.0)

素材:

网站:
http://www.shicimingju.com(如有侵权,请联系我删除,谢谢)

小说:三国演义

案例实现用到的技术:

正则表达式

Java网络通信:URL

IO流

Map—HashMap

字符串操作

异常处理

代码思路:

  1. 根据小说存放位置创建file对象
  2. 根据网页结构编写正则,创建pattern对象
  3. 编写循环,创建向所有小说章节页面发起网络请求的url对象
  4. 网络流BufferReader
  5. 创建输入流
  6. 循环读取请求得到的内容,使用正则匹配其中的内容
  7. 将读取到的内容写入本地文件,知道循环结束
  8. 注意代码中的异常处理

案例代码:

案例代码:
package com.qianfeng.text;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetText {
	public static void main(String[] args) {
		// 1、	根据小说存放位置创建file对象
		File file = new File("D:\\File\\three_guo.txt");
		// 2、	根据网页结构编写正则,创建pattern对象
		String regex_content = "(.*?)

"; String regex_title = "(.*?)"; 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("http://www.shicimingju.com/book/sanguoyanyi/" + 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("", "").replace("", ""); System.out.println(title); writer.write("第" + i + "章:" + title + "\n"); } while (m_content.find()) { String content = m_content.group(); // 清洗得到的数据 content = content.replace("

", "").replace("

", "").replace(" ", "").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(); } } } }

运行效果:

相关文章

Python爬取小说技术指南

在 Python 中爬取小说需要遵循法律法规和网站的服务条款,请确保你有权获取目标内容。以下是使用 Python 爬取小说的通用技术流程安装依赖库pip install requests beauti...

用Python 爬取并保存小说

1. 安装requests pip install requests2. 安装lxml pip install lxml3. 斗罗大陆网页代码4 import requests from lxml i...

python:最简单爬虫之爬取小说网Hello wrold

以下用最简单的示例来演示爬取某小说网的类目名称。新建一个retest.py,全文代码如下,读者可以复制后直接运行。代码中我尽量添加了一些注释便于理解。需要说明的一点,该小说网站如果后续更新改版了,文中...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用 requests 和 re 来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前 500 本好五星评书籍怎么样?ok接下来就是学习 python 的正确姿...

超有趣!用 Python 爬取抖音热门视频数据,探索爆款密码

在当今的社交媒体时代,抖音无疑是最热门的平台之一。每天都有海量的视频被上传,其中一些视频迅速走红,成为爆款。你是否好奇这些热门视频背后有什么规律?今天,我们就用 Python 来爬取抖音热门视频数据,...