使用jsoup来写小说采集器

现在的小说越来越难找了,一般都是在线的,费流量且收藏起来麻烦。所以我觉得写一个整理器,从某些小说网站获取小说内容并保存为txt文件。我们使用jsoup它的maven描述为:<dependency> &nb...

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

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

我们使用jsoup

它的maven描述为:

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

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

搜索好文章点进去后

 

这就是文章列表。

下面就开始分析和采集了

这里我们需要分析文章。

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

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

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

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

根据分析我们可以得知 文章在一个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;
	}

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

我们发现文章在一个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


条评论

请先 登录 后评论
不写代码的码农
三叔

422 篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除