手把手教你运用JAVA爬虫技术爬取小说 |
您所在的位置:网站首页 › eclipse怎么查看代码作者 › 手把手教你运用JAVA爬虫技术爬取小说 |
手把手教你运用JAVA爬虫技术爬取小说
欢迎来到JAVA爬虫教学前言一、JAVA爬虫是什么?二、安装Maven2.1 Maven的下载2.2 Maven的配置
三、Maven项目的创建3.1Maven项目创建3.2Maven项目配置
四、运用JAVA爬虫爬取网页小说4.1 准备4.2 找到要爬取的网页4.3 全部代码4.4代码详解A代码.B代码.C代码.
五、结果展示六、总结
欢迎来到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 选择红框标注的文件点击下载。 A.首先在指定磁盘创建一个Maven目录,此目录用于存储刚才下载并解压出来的maven文件,接着将下载的maven解压到其中。 B.接着在Maven目录中创建一个名为repository的目录,关于这个目录的作用就是存储maven下载的jar包。 如下图。 D.接着修改maven下载的数据存放的本地仓库,如果不修改默认的存放位置都是C盘,C盘满了会是什么情况大家应该都明白。 E.最后配置环境变量:MAVEN_HOME:指向的maven的解压目录 F.PATH:在最后添加 %MAVEN_HOME%\bin; (以上两步学过JAVA的都明白,在此不过多阐述了) G.最后在eclipse中配置maven 在窗口中点击首选项。 选择刚刚的maven目录,点击完成。
这里在Filter里选择maven-archetype-quickstart版本为1.4,习惯上一般选择这个。
如上图找到App.java打开,此类就是我们需要书写的主方法。 4.2 找到要爬取的网页这里我们将要爬取小说的网页设置为http://www.ybdu.co/0/8/。 按F12进入网页调试页面。 通俗一点的说:如上图,可以看到每个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("", ""); content=content.replace(";", ""); 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");先上图: 由于上述操作已经拿到了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的桥梁。通过伪装浏览器,躲过网站蓄意攻击检测,达到爬虫的目的。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |