手把手教你运用JAVA爬虫技术爬取小说

1 篇文章 2 订阅
订阅专栏

欢迎来到JAVA爬虫教学

你好! 欢迎你来到我的教学,这次,我将教会你如何运用JAVA爬虫,爬取小说内容,并保存在本地磁盘。
作者QQ:1919565533,欢迎提问。

前言

随着大数据产业的发展,越来越多的数据需要被采集与挖掘,对于非相关专业的人来说数据采集最多的途径就是下载,但是仍然有一些数据是隐藏在网页中的,只能观看不能下载,这时有人说可以通过复制粘贴的方法进行保存,其实这也是一个方法,但是在庞大的数据量面前,如果单靠手动是及其消耗时间的,所以通过程序来将数据提取出来就可以达到节省时间的目的,从而提高了效率。本文以小说为例,运用JAVA爬虫技术,将小说下载到本地磁盘中。本文基于JAVA讲述,运用工具为eclipse,如果没有eclipse的小伙伴可以先去其他文章学习一下如何下载安装。

一、JAVA爬虫是什么?

通俗一点的讲,JAVA爬虫就是运用特定的技术,将网页上的数据下载到硬盘中。

二、安装Maven

要想运用JAVA爬虫,首先要在eclipse中安装相关的控件,这里我们选择Maven,Maven的好处就是可以自动下载相关的依赖,所谓的依赖就是JAVA中的导包。因为要运用JAVA爬虫,单单靠JAVA自带的JDK是不能够满足我们的需求的,这时就需要借助外来的包,一般的借用外来的包的方法有两个,一个是自己手动下载,另一个是依靠Maven,手动下载过程极其复杂且繁琐,然而依靠Maven项目,只需要安装配置好Maven,并在pom文件中输入相应的依赖并保存,这时Maven控件就会自动帮你下载并安装相应的包,非常方便。

2.1 Maven的下载

首先登录网站: https://maven.apache.org/download.cgi
选择红框标注的文件点击下载。
在这里插入图片描述

2.2 Maven的配置

A.首先在指定磁盘创建一个Maven目录,此目录用于存储刚才下载并解压出来的maven文件,接着将下载的maven解压到其中。
B.接着在Maven目录中创建一个名为repository的目录,关于这个目录的作用就是存储maven下载的jar包。
在这里插入图片描述
C.修改maven下conf目录中的settings.xml文件
首先配置maven下载资料的中央服务器,为什么要配置中央服务器呢,因为从maven下载的jar包都是从国外下载的,我们在国内下载的话会很慢,有时候还会崩掉,这时候我们就可以换一个源,比如阿里云。找到mirrors这一对尖括号,将如下代码粘贴进去就可以。

<mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <!-- https://maven.aliyun.com/repository/public/ -->
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
</mirrors>

如下图。
在这里插入图片描述

D.接着修改maven下载的数据存放的本地仓库,如果不修改默认的存放位置都是C盘,C盘满了会是什么情况大家应该都明白。
在这里插入图片描述
这里的路径就是一开始创建的repository目录的路径。

E.最后配置环境变量:MAVEN_HOME:指向的maven的解压目录
F.PATH:在最后添加 %MAVEN_HOME%\bin;
(以上两步学过JAVA的都明白,在此不过多阐述了)

G.最后在eclipse中配置maven
在窗口中点击首选项。
在这里插入图片描述
找到Maven点击Installations,由于我这里已经在eclipse中配置过maven,没有配置过的是没有maven的,然后点击Add。
在这里插入图片描述

选择刚刚的maven目录,点击完成。
在这里插入图片描述
再点击UserSettings,在Global Settings中选择刚刚配置完的settings.xml
在Local Repository中选择刚刚创建的repository目录。
在这里插入图片描述
至此我们的maven在eclipse中配置完成。

三、Maven项目的创建

3.1Maven项目创建

在这里插入图片描述
选择其他
在这里插入图片描述
选择maven项目,点击下一步
在这里插入图片描述
如图继续下一步
在这里插入图片描述

这里在Filter里选择maven-archetype-quickstart版本为1.4,习惯上一般选择这个。
在这里插入图片描述
注意Maven项目中的GroupId就相当于package,而ArtifactId则是相当于项目名。

3.2Maven项目配置

在这里插入图片描述
创建完毕后,显示如上图所示,进入到pom.xml中。
在这里插入图片描述
在依赖中补充jsoup依赖,如上图,写完后保存。
在这里插入图片描述
保存过后,maven项目会自动下载相关依赖,如上图可以看到在Maven Dependencies下,可以看到我们刚才配置的jsoup的jar包,表示相关依赖已经下载完毕。

四、运用JAVA爬虫爬取网页小说

4.1 准备

在这里插入图片描述

如上图找到App.java打开,此类就是我们需要书写的主方法。

4.2 找到要爬取的网页

这里我们将要爬取小说的网页设置为 http://www.ybdu.co/0/8/。
在这里插入图片描述

按F12进入网页调试页面。
在这里插入图片描述
点击左上角的小鼠标。
在这里插入图片描述
将小鼠标放到要爬取的文字上点击,会出现如下图所示的界面。
在这里插入图片描述
单击,并观看右边网页源码区域
在这里插入图片描述
如上图可以看到小说的具体内容存于href中,而标题存放于text中。对于没学过html的同学可能不懂什么是href和text,这里只教你怎么爬取,如果你想更深一步的学习,推荐一本书:网络数据采集技术。
在这里插入图片描述
在这里插入图片描述

通俗一点的说:如上图,可以看到每个a都是在一个名为li的东西内,而每个li都在名为ul的一个东西内,而这个ul又在div中。
所以在进行抓取时,我们要从外往内抓取数据,我们只要抓到了一个名为panel-body的div,然后再在里面寻找一个名叫list-group list-charts的ul,然后再在ul中寻找li,将li中的a取出,并获得a的text作为爬取的文件名,保存href。这样我们就能锁定需要爬取的文章的名字和内容在网页中存储的位置。

4.3 全部代码

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class App 
{
    public static void main( String[] args ) throws IOException
    {
    //设置下载文件存放磁盘的位置
       File file=new File("d:\\大宝鉴");
    //判断文件夹是否存在,不存在就创建
       if(!file.exists()) {
    	   file.mkdirs();
       }
     //规定要爬取的网页
       String url="http://www.ybdu.co/0/8/";
       Connection conn=Jsoup.connect(url);
       //伪装成为浏览器,有的网站爬取数据会阻止访问,伪装成浏览器可以访问,这里我伪装成Google浏览器
       Document doc=conn.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36").get();
       //寻找名叫panel-body的div,接着再在里面寻找叫list-group.list-charts的ul,再在里面寻找li,再在li里寻找a
       Elements as=doc.select("div.panel-body ul.list-group.list-charts li a");
       for(Element a : as) {
       //对于每一个元素取出拿到href和小说名字
    	   String href=a.attr("href");
    	   String title=a.text();
    	   //file:表示存放文件的位置
    	   //href:表示要读取内容的页面
    	   //title:表示存放文件名称
    	   save(file,href,title);
       }
    }
	private static void save(File file, String href, String title) throws IOException {
		//在file目录下创建每一个章命名的txt文件
		File f=new File(file,title+".txt");
		//构建输出流对象,因为小说的内容是字符类型的数据
		Writer out=new FileWriter(f);
		//构建读取页面的url
		//http://www.ybdu.co/0/8/6850.html
		String url="http://www.ybdu.co"+href;
		Connection conn=Jsoup.connect(url);
		//伪装成为浏览器
		Document doc=conn.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36").get();
		//获取小说的正文
		String content=doc.select("div.panel-body.content-body.content-ext").html();
		//处理特殊数据
		content=content.replace("一本读|WwんW.『yb→du→.co", "");
		content=content.replace("<br>", "");
		content=content.replace("&nbsp;", "");
		out.write(content);
		out.close();
		//需要使用休眠,为了防止网站检测为蓄意攻击,停止我们的IP访问
		
		int n=(int) (Math.random()*1000+100);
		try {
			Thread.sleep(n);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

4.4代码详解

A代码.

 Elements as=doc.select("div.panel-body ul.list-group.list-charts li a");

先上图:
在这里插入图片描述
div.panel-body代表的就是名叫panel-body的div块,包括里面所有的东西。以此类推, ul.list-group.list-charts代表的就是名叫,list-group list-charts的ul块,但是要注意的是这个块的名字中间有空格,这里空格用.代替,li a的意思就是拿到每一个a元素,方便以后操作。

B代码.

 for(Element a : as) {
       //对于每一个元素取出拿到href和小说名字
    	   String href=a.attr("href");
    	   String title=a.text();
    	   //file:表示存放文件的位置
    	   //href:表示要读取内容的页面
    	   //title:表示存放文件名称
    	   save(file,href,title);
       }

由于上述操作已经拿到了a,对于每个a我们通过attr方法,取得a的href,这里的href就是“/0/8/6850.html”,text方法就是获取a的字符串标题这里是"第一章 莫欺少年穷"。

C代码.

 Document doc=conn.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36").get();

这里的header里的参数是为了伪装成浏览器,对于某些有防爬虫的网站必须伪装成浏览器才能进行爬取,这里的参数可以当做常量来使用,你也可以伪装成IE,FireFox。这里的参数如何设置,可以看我的另一篇文章,以后会发出去。

五、结果展示

如下图可以看到爬取的小说数量。
在这里插入图片描述
随便打开一个:
在这里插入图片描述
可以看到,小说内容已经爬取完毕了。

六、总结

本文的JAVA网络爬虫主要运用的Jsoup,通过Jsoup的Connect方法构造url与Document的桥梁。通过伪装浏览器,躲过网站蓄意攻击检测,达到爬虫的目的。

在这里插入图片描述

手把手你用Node.js爬虫爬取网站数据的方法
10-18
主要介绍了手把手你用Node.js爬虫爬取网站数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java网络爬虫抓取代理ip
06-12
通过Java网络爬虫爬取指定代理ip网上的ip,利用了jsoup、httpclient技术实现
java爬虫——JSoup
LYQ
03-01 9425
JSoup JSoup 是用于提取和处理 HTML 数据的 Java 库。 它实现了 HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。 该项目的网站是 jsoup.org 。 JSoup 功能 使用 JSoup,我们能够: 从 URL,文件或字符串中抓取并解析 HTML 使用 DOM 遍历或 CSS 选择器查找和提取数据 处理 HTML 元素,属性和文本 根据安全的白名单清除用户提交的内容,以防止 XSS 攻击 输出整洁的 HTML JSoup Mavven 依赖
小说爬虫JAVA代码的实现(附代码)
热门推荐
04-29 1万+
第一次采用Markdown看看效果。思路:首先找到一篇小说,获取第一章小说的URL,然后根据该URL来获取该章小说的标题、内容和下一章的URL。之后重复类似动作,就能获取到整篇小说的内容了。 实现方法:这里语言采用==Java==,使用了jsoup。jsoup简单的使用方法可以参考这里。 实现过程:首先找到一篇小说,这里以“神墓”为例,我们打开第一章,然后查看网页源代码。 在源码中我们可以看到下一
JAVA使用jsoup爬取小说
最新发布
qq_54673740的博客
04-02 450
随着大数据产业的发展,越来越多的数据需要被采集与挖掘,对于非相关专业的人来说数据采集最多的途径就是下载,但是仍然有一些数据是隐藏在网页中的,只能观看不能下载,这时有人说可以通过复制粘贴的方法进行保存,其实这也是一个方法,但是在庞大的数据量面前,如果单靠手动是及其消耗时间的,所以通过程序来将数据提取出来就可以达到节省时间的目的,从而提高了效率。本文以小说为例,运用JAVA爬虫技术,将小说下载到本地磁盘中。本文基于JAVA讲述,运用工具为idea,如果没有idea的小伙伴可以先去其他文章学习一下如何下载安装。
java爬虫抓取城市数据
09-27
java爬虫抓取城市数据,数据抓取后直接持久化到数据库当中。博客地址http://blog.csdn.net/qq_23994787/article/details/78107890 如果没有积分的话,在主页给博主发邮件获取。
java 小说爬虫
魑魅魍魉9527
07-21 769
【代码】java 小说爬虫
Java网络爬虫(三)爬取网络小说
Java朱老师博客
09-30 3845
1.爬取小说章节内容,需要注意的大部分原创小说内容页是禁用右键的,无法直接选取页面内容进行元素检查,需要按F12,从上往下逐步选取元素。 2.利用IO流,将爬取的内容保存到本地文本文件。 本练习循序渐进,Demo1、首先爬取某一章节小说内容,Demo2、爬取完整一本小说内容,Demo3、爬取首页推荐榜中所有作品内容。 在项目中添加HttpClient、Jsoup依赖,参加本系列上两章。 Demo1:爬取某一章节小说内容 public static void main(String[] args) throw
java爬虫爬取笔趣阁小说(一)
m0_54765221的博客
02-16 442
希望你看的时候,这个网站还在……
Java爬虫,爬网页,爬小说,完整程,一看就会
TNDHY_ANNI_MXZL的博客
12-29 4156
昨天小编看到了一部不错的小说,但是没有办法下载,只能一页一页地看,于是想到了爬虫,现在Java也有了爬虫的框架,很简单,就算小白也能轻易入门,话不多说,直接上手。 1.首先引入相关依赖 不会maven的话可以按照右边直接去maven库下载添加jar包,注意不要少包,否则会报找不到类 依赖示例代码: <dependencies> <dependency> <groupId>us.codecraft</g..
java爬虫抓取图片
09-27
java爬虫抓取图片,单线程,代码简洁,适合新手使用,有问题的话可以来博主主页留言探讨,一起解决技术问题。
java实现响应式布局爬虫技术
04-18
Java 网络爬虫实现网络抓取图片数据、流式布局、响应式布局、懒加载、动态切换加载技术
保姆级手把手你实现网络爬虫
12-15
code_space_spider_demo ... ├─spider_main.py 爬虫启动器 ...- URL管理器:对将要爬取的URL和已经爬取的URL进行管理。 - 网页下载器:接受URL管理器发送过来的待爬取的URL,然后把该URL对应的网页下载并存储下来。
手把手你写python爬虫
11-21
手把手你写python爬虫
手把手你写Python爬虫
09-04
手把手你写Python爬虫 一篇文章带你快速了解!
java小说爬虫
千霜的博客
05-29 2830
借助java的html解析框架Jsoup,可以方便爬取网页,该框架用法见Java html解析器之Jsoup。 该爬虫只有一个文件 WebBookCrawler.java package top.sidian123; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; i...
java爬虫批量下载小说Demo(好讀网小说爬取)
山河已无恙
10-16 1387
“有些人认为,人应该充满境界高尚的思想,去掉格调低下的思想。这种说法听上去美妙,却使我感到莫大的恐慌。因为高尚的思想和低下的思想的总和就是我自己。” ---王小波
Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库
Ontheroad_的博客
09-29 2946
一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库   目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 pom.xml 第二步:编码工作 BookInfo Parse URLFecter Main 第三步:插入数据库操作 MyDataSource MySqlControl ...
python爬虫手把手
06-01
好的,我可以给你一个简单的 Python 爬虫手把手程。请按照以下步骤操作: 1. 安装 Python 如果你还没有安装 Python,可以在官网上下载安装:https://www.python.org/downloads/ 2. 安装 Requests 库 Requests 是 Python 中一个常用的 HTTP 库,用于发送 HTTP 请求和处理响应。你可以使用以下命令来安装 Requests 库: ``` pip install requests ``` 3. 编写爬虫代码 在 Python 中,你可以使用 Requests 库发送 HTTP 请求。以下是一个简单的爬虫示例,它可以访问百度首页并打印页面的 HTML 内容: ```python import requests url = 'https://www.baidu.com/' response = requests.get(url) print(response.text) ``` 4. 解析 HTML 内容 如果你想从 HTML 页面中提取数据,可以使用 Python 中的解析库,如 BeautifulSoup。以下是一个示例,它可以从百度首页中提取所有的超链接: ```python import requests from bs4 import BeautifulSoup url = 'https://www.baidu.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') links = soup.find_all('a') for link in links: print(link.get('href')) ``` 以上是一个简单的 Python 爬虫示例,你可以根据自己的需要进行修改和扩展。另外,需要注意的是,在进行爬虫时,一定要遵守相关法律法规和网站的使用协议,不要进行恶意攻击和侵犯他人隐私的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 手把手教你运用JAVA爬虫技术爬取小说 7424
  • Matplotlib中图表辅助元素 1603
  • 科学计算01-NumPy 1010
  • Matplotlib中图形简介 488
  • 手把手教你运用MySQL从入门到入土 245

分类专栏

  • MySQL 1篇
  • Matplotlib 2篇
  • 数据挖掘 1篇
  • NumPy 1篇
  • JAVA爬虫 1篇

最新评论

  • 手把手教你运用JAVA爬虫技术爬取小说

    呆呆槑怂: 找到正文,用元素选择器,然后右键--> copy -->copy select

  • 手把手教你运用JAVA爬虫技术爬取小说

    m0_63268624: 大神啊,String content = doc.select("div.panel-body.content-body.content-ext").html();获取正文这一句源码怎么理解啊,源码里面看不到啊?

  • 手把手教你运用MySQL从入门到入土

    hawzhangy: 你不配

  • 手把手教你运用MySQL从入门到入土

    qq_52951002: 太棒了,能出个Mac的吗

  • 手把手教你运用MySQL从入门到入土

    weixin_46064773: 表情包表情包表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 手把手教你运用MySQL从入门到入土
  • Matplotlib中图表辅助元素
  • Matplotlib中图形简介
2021年5篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hawzhangy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司漳州网站定制哪家好上饶推广网站推荐鹰潭网站设计模板肇庆百度关键词包年推广哪家好朝阳关键词排名包年推广公司玉林设计公司网站多少钱宣城网站设计哪家好南澳品牌网站设计报价资阳网站优化推广报价宿迁百度标王娄底网站关键词优化推荐宣城百度网站优化排名价格沈阳关键词按天计费多少钱怀化网络推广报价平湖阿里店铺托管曲靖外贸网站设计价格泸州阿里店铺托管推荐大运关键词按天收费昆明关键词排名推荐忻州网站优化排名和县seo优化公司六安关键词排名包年推广推荐石家庄seo网站推广哪家好罗湖模板网站建设哪家好运城外贸网站设计哪家好荆门网站开发多少钱武威阿里店铺运营洛阳至尊标王推荐邢台外贸网站设计哪家好四平网站推广方案哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化