使用jsoup来写小说整理器

现在的小说越来越难找了,一般都是在线的,费流量且收藏起来麻烦。

所以我觉得写一个整理器,从某些小说网站获取小说内容并保存为txt文件。

我们使用jsoup

它的maven描述为:

<dependency>
  	<groupId>org.jsoup</groupId>
  	<artifactId>jsoup</artifactId>
  	<version>1.11.2</version>
</dependency>

我们先找个小说网站,比如我们百度“思路客”,点击一个网站(http://www.siluwu.com)进去后,搜索 烟雨江南的“亵渎”

1524bcc760b180e6cdbaba8738a84b3152c.jpg

搜索好文章点进去后

c8f1fb063ff580d22462543806c346ab1b4.jpg

 

这就是文章列表。

下面就开始分析和采集了

这里我们需要分析文章。

首先我们先获取小说的文章名,我们知道文章名是id为title的div

924e35d1c9dd49094f9fa912acaa4179ceb.jpg

我们获取ID为title的内容。他的路径是"#title" 和jQuery很相似。

String xiaoshuoTitle = JsoupUtil.getElementString(doc, "#title");

下面我们来获取文章目录:

63362012a74f6db5de91db79de85e428056.jpg

根据分析我们可以得知 文章在一个ID为list的层下面.

所以我们可以使用

Elements es =  JsoupUtil.getElements(doc, "#list > dl > dd > a");

这样我们就可以获取所有的文章链接。

我们可是使用 e.attr("href") 来获取链接地址 使用 e.text() 来获取链接内容,也就是文章标题。

代码如下:

private static List<Article> getList(Document doc) throws IOException{
		Elements es =  JsoupUtil.getElements(doc, "#list > dl > dd > a");
		List<Article> as = new ArrayList<Article>();
		for(int i =0 ; i < es.size(); i++){
			Article a = new Article();
			Element e = es.get(i);
			a.setLink(e.attr("href"));
			a.setTitle(e.text());
			as.add(a);
		}
		return as;
	}

这样我们就可以拿到一个文章集合。下面就是去解析每篇文章的标题:

df7d9115e8c97c2abf0deb54a1a529966ec.jpg

我们发现文章在一个ID为content的层里面。

所以我们可以通过 JsoupUtil.getElements(doc, "#content").first(); 来获取文章所在层。并且可以通过 html()方法来返回内容。

下面我们要做的就是将所有的html标签去除,并且将<br>替换为换行。

String content = getArticle(root_url+link);
content = content.replaceAll("&nbsp;", " ");
content = content.replaceAll("<br>", "\n");
content = content.replaceAll("\n+", "\n");
content = content.replaceAll("<[^>]+>", "");
content = content.replace("read_content_up();", "");
content = title+"\n"+content;

最后我们只需要将字符串拼接成为小说,并保存为txt文件。这样把txt导入到手机里 就是完整小说了。

项目附件在:http://www.idaima.com/a/194.html

转载于:https://my.oschina.net/ij2ee/blog/3027626

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值