基于Java的网络爬虫实现抓取网络小说(一)
基于Java的网络爬虫实现抓取网络小说(一)
- 首先建立一个名为Novel的maven项目
- 项目所需要的jar包pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>Novel</groupId><artifactId>novel.spider</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.9.2</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
</project>
- 我们要获取的是章节目录,需要相关的实体类Chapter.java
package novel.spider.entity;import java.io.Serializable;/*** 小说章节实体类* @author lilonghua* @date: 2017年6月22日*/
public class Chapter implements Serializable {private static final long serialVersionUID = 1L;private String title;//小说章节private String url;//章节链接public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}@Overridepublic String toString() {return "Chapter [title=" + title + ", url=" + url + "]";}
}
- 接下来我们要写一个接口,一个用来获取章节url的方法IChapterInter.java
ackage novel.spider.interfaces;import java.util.List;import novel.spider.entity.Chapter;/*** 小说url接口* @author lilonghua* @date: 2017年6月22日*/
public interface IChapterInter {/*** 获取一个完整的url链接,显示所有章节列表* @param @param url* @param @return * @return * @throws*/public List<Chapter> getChapter(String url);}
- 之后我们需要在写一个方法来获取传过来的url,并且实现它的抓取IChapterInterImpl.java
package novel.spider.impl;import java.util.ArrayList;
import java.util.List;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import novel.spider.entity.Chapter;
import novel.spider.interfaces.IChapterInter;/*** 小说url接口实现类* * @author lilonghua* @date: 2017年6月22日*/
public class IChapterInterImpl implements IChapterInter {protected String crawl(String url) throws Exception {//采用HttpClient技术try (CloseableHttpClient httpClient = HttpClientBuilder.create().build();CloseableHttpResponse httpResponse = httpClient.execute(new HttpGet(url))) {String result = EntityUtils.toString(httpResponse.getEntity());return result;} catch (Exception e) {throw new RuntimeException(e);}}@Overridepublic List<Chapter> getChapter(String url) {try {String result = crawl(url);Document doc = Jsoup.parse(result);Elements as = doc.select("#list dd a");List<Chapter> chapters = new ArrayList<>();for (Element a : as) {Chapter chapter = new Chapter();chapter.setTitle(a.text());chapter.setUrl("http://www.bxwx8.org" + a.attr("href"));chapters.add(chapter);}return chapters;} catch (Exception e) {throw new RuntimeException(e);}}}
- 最后是测试,我们需要在test下创建测试类TestOne.java
package novel.spider.test;import java.util.List;import org.junit.Test;import novel.spider.entity.Chapter;
import novel.spider.impl.IChapterInterImpl;/*** 测试链接* @author lilonghua* @date: 2017年6月22日*/
public class TestOne {@Testpublic void test1(){IChapterInterImpl ChapterInterImpl = new IChapterInterImpl();List<Chapter> chapterList = ChapterInterImpl.getChapter("http://www.biquge.tw/0_5/");for (Chapter chapter : chapterList) {System.out.println(chapter);}}
}
- 测试结果,完美实现
- 最后来个完整的项目结构图
基于Java的网络爬虫实现抓取网络小说(一)相关推荐
- 基于Java的阿里妈妈数据抓取技术
基于Java的阿里妈妈数据抓取技术 前言: 对于需要登录的网站爬虫最大的困难就是需要登录,然后才能获取到数据,如微博,阿里妈妈,webqq等.之前也有看过使用浏览器登录到网站后直接从浏览器中获取coo ...
- (插播)网络爬虫,抓取你想要得东西。
project在以下 近期,有个朋友说.想在一些页面上获取一些关键性得信息.比方,电话.地址等等.一个个页面去找 又非常麻烦. 这时候,想起了 何不去用"爬虫"去抓取一些想要得东西 ...
- java 开发用到网络爬虫,抓取汽车之家网站全部数据经历
经历了两个礼拜的折腾,某某知名网站的数据终于到手了.犯罪没被发现这种心情感觉很爽. 说一下我的犯罪经历,之前公司总是抓取某某网站数据,可能是被发现了.某某网站改变了策略.通过各种技术终止了我们的行为, ...
- python数据抓取技术与实战训练_师傅带徒弟学Python:项目实战1:网络爬虫与抓取股票数据...
本视频基于**Python 3.X版本 本视频课程是第四篇第一个实战项目,内容包括网络爬虫技术.使用urllib爬取数据.使用Selenium爬取数据.使用正则表达式.使用BeautifulSoup库 ...
- java爬取网易云歌单_[原创]基于Java网易云音乐评论抓取~【悠着点玩啊~】
本帖最后由 wushaominkk 于 2018-3-20 10:40 编辑 一般我们爬虫都是采用Python,自己闲的无聊就有Java编写一个简单的网易云音乐评论的抓取,这个仅仅是我开发的一个小小调 ...
- 网络爬虫--python抓取豆瓣同城北京地区活动信息
感谢主赐予我们时光. 本内容只涉及技术探讨,不作为商业用途. 背景 作为入门级的爬虫,其实不需要了解复杂的正则表达式匹配,高深的网络协议.只需要了解一些基本的python语法和html请求/响应原理就 ...
- 40行代码教你利用Python网络爬虫批量抓取小视频
1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...
- python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频
/1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...
- Python网络爬虫:抓取书籍排行榜 并生成HTML网页
Hello,大家好,我是wangzirui32,我们来学习如何抓取书籍排行榜,并生成HTML网页,开始学习吧! 文章目录 1. 分析HTML 2. 爬虫程序 3. 生成HTML网页 3.1 rende ...
最新文章
- 如何在windows 10 x64安装佳能 CP900 驱动
- autojs微博_js实现微博发布小功能
- 一个兼容所有浏览器的阻止事件冒泡方法
- leetcode275. H指数 II(二分法)
- 如何在 Java 中正确使用 wait, notify 和 notifyAll?
- abs 不会整数 方法 溢出_asp cint clng的范围与防止cint和clng的溢出解决方法大全
- 包容网关 Inclusive Gateway
- docker必须要sudo,但是sudo的话,又获得不了环境变量怎么办?
- 解决上传窗口弹不出的问题
- linux之SQL语句简明教程---CONCATENATE
- mysql 镜像安装方法_MySql镜像安装
- python函数手册pdf_Numpy函数手册(中文版).pdf
- 【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
- 如何在虚拟机linux下运行程序吗,在Linux上运行虚拟机的3种方法 | MOS86
- html图片随圆点下标轮播,基于JavaScript实现轮播图代码
- 非递归获取二叉树中叶子结点的个数
- 乐优商城第九天,第十天,(商品规格参数模版的新增,商品的新增)
- bochs运行xp_在bochs虚拟机中安装WindowsXP (学习)
- 转贴:ubuntu Rhythmbox歌曲名乱码问题
- 极米发布极光RS Pro、H3、Z8X三款新品