基于lucene的案例开发:纵横小说阅读页采集

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44937073

http://www.llwjy.com/blogdetail/29bd8de30e8d17871c707b76ec3212b0.html

个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~

-------------------------------------------------------------------------------------------------

在之前的三篇博客中,我们已经介绍了关于纵横小说的更新列表页、简介页、章节列表页的相关信息采集,今天这篇博客就重点介绍一下最重要的阅读页的信息采集。本文还是以一个简单的URL为例,网址如下:http://book.zongheng.com/chapter/362857/6001264.html 。

页面分析

上述url网址下的下面样式如下:

阅读页和章节列表页一样,都无法通过简单的鼠标右键-->查看网页源代码 这个操作,所以还是通过F12-->NetWork-->Ctrl+F5这个操作找到页面的源代码,结果截图如下:

对页面源代码做简单的查找,即可找到标题、字数和章节内容这些属性值所在的位置分别是 47行、141行和145行(页面不同,可能所在的行数也略微有点差别,具体的行数请个人根据实际情况来确定)。

对于这三部分的正则,因为和之前的大同小异,使用的方法之前也已经介绍了,所以这里就只给出最终的结果:

\\章节内容正则
private static final String CONTENT = "<div id=\"chapterContent\" class=\"content\" itemprop=\"acticleBody\">(.*?)</div>";
\\标题正则
private static final String TITLE = "chapterName=\"(.*?)\"";
\\字数正则
private static final String WORDCOUNT = "itemprop=\"wordCount\">(\\d*)</span>";

运行结果

看到运行结果的截图,你也许会发现一个问题,就是章节内容中含有一些html标签,这里是因为我们的案例最终的展示是网页展示,所以这里就偷个懒,如果需要去掉这些标签的,可以直接通过String的repalceAll方法对其替换。

源代码

查看最新源代码请访问:http://www.llwjy.com/source/com.lulei.crawl.novel.zongheng.ReadPage.html

 /**
 *@Description:   阅读页
 */
package com.lulei.crawl.novel.zongheng;  

import java.io.IOException;
import java.util.HashMap;

import com.lulei.crawl.CrawlBase;
import com.lulei.util.DoRegex;
import com.lulei.util.ParseUtil;

public class ReadPage extends CrawlBase {
	private static final String CONTENT = "<div id=\"chapterContent\" class=\"content\" itemprop=\"acticleBody\">(.*?)</div>";
	private static final String TITLE = "chapterName=\"(.*?)\"";
	private static final String WORDCOUNT = "itemprop=\"wordCount\">(\\d*)</span>";
	private String pageUrl;
	private static HashMap<String, String> params;
	/**
	 * 添加相关头信息,对请求进行伪装
	 */
	static {
		params = new HashMap<String, String>();
		params.put("Referer", "http://book.zongheng.com");
		params.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36");
	}

	public ReadPage(String url) throws IOException {
		readPageByGet(url, "utf-8", params);
		this.pageUrl = url;
	}

	/**
	 * @return
	 * @Author:lulei
	 * @Description: 章节标题
	 */
	private String getTitle() {
		return DoRegex.getFirstString(getPageSourceCode(), TITLE, 1);
	}

	/**
	 * @return
	 * @Author:lulei
	 * @Description: 字数
	 */
	private int getWordCount() {
		String wordCount = DoRegex.getFirstString(getPageSourceCode(), WORDCOUNT, 1);
		return ParseUtil.parseStringToInt(wordCount, 0);
	}

	/**
	 * @return
	 * @Author:lulei
	 * @Description: 正文
	 */
	private String getContent() {
		return DoRegex.getFirstString(getPageSourceCode(), CONTENT, 1);
	}

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		ReadPage readPage = new ReadPage("http://book.zongheng.com/chapter/362857/6001264.html");
		System.out.println(readPage.pageUrl);
		System.out.println(readPage.getTitle());
		System.out.println(readPage.getWordCount());
		System.out.println(readPage.getContent());
	}

}

----------------------------------------------------------------------------------------------------

ps:最近发现其他网站可能会对博客转载,上面并没有源链接,如想查看更多关于 基于lucene的案例开发点击这里。或访问网址http://blog.csdn.net/xiaojimanman/article/category/2841877 或 http://www.llwjy.com/blogtype/lucene.html

时间: 2024-10-10 19:50:08

基于lucene的案例开发:纵横小说阅读页采集的相关文章

基于lucene的案例开发:纵横小说分布式采集

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/46812645 http://www.llwjy.com/blogdetail/9df464b20cca5405c7ce07e2fb2d768f.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

基于lucene的案例开发:纵横小说数据库设计

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/45694049 http://www.llwjy.com/blogdetail/fa404163e42295646ab6e36e1ddb1037.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

基于lucene的案例开发:纵横小说简介页采集

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44851419 http://www.llwjy.com/blogdetail/1b5ae17c513d127838c2e02102b5bb87.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

基于lucene的案例开发:纵横小说更新列表页抓取

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44831003 http://www.llwjy.com/blogdetail/a2d1df2b69f17696865f086777996fb1.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

基于lucene的案例开发:纵横小说章节列表采集

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44854719 http://www.llwjy.com/blogdetail/ddcad68eeb91034247ffa331eb461213.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

基于lucene的案例开发:案例初识

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/43192055 首先抱歉,这几天在准备案例的整体框架设计,所以更新就断了几天,还请原谅. 案例整体介绍 在我们开始正式的案例开发介绍之前,我们先看一下整体的案例demo介绍,明白案例是做什么的. 从上图中,我们可以看出,这个案例主要是通过爬虫程序去采集纵横小说上的资源,然后将资源存储到自己的数据库中,将数据库中的需要检索的数据通过lucene建立索引文件,最后通过web服务展示数

基于lucene的案例开发:Query查询

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/42969443 在Lucene索引的搜索过程中,构建Query对象是一个十分重要的过程.对于Query的理解,可以把它想象成数据库SQL查询语句中的where条件(当然Query的功能要比sql强大很多),在这篇博客中,我们将重点介绍几种常用的Query子类:QueryParser. MultiFieldQueryParser.TermQuery .PrefixQuery. Ph

基于lucene的案例开发:分词器介绍

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/42916755 在lucene创建索引的过程中,数据信息的处理是一个十分重要的过程,在这一过程中,主要的部分就是这一篇博客的主题:分词器.在下面简单的demo中,介绍了7中比较常见的分词技术,即:CJKAnalyzer.KeywordAnalyzer.SimpleAnalyzer.StopAnalyzer.WhitespaceAnalyzer.StandardAnalyzer.I

基于lucene的案例开发:实现实时索引基本原理

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/43982653 http://www.llwjy.com/blogd.php?id=63d4c488a2cccb5851c0498d374951c9 个人的博客小站也搭建成功,网址:www.llwjy.com/blog.php ,欢迎大家来吐槽~ 基本原理 在前面的博客中也说过,程序初始话索引文件是十分消耗系统资源的,因此要想实现实时索引就不能实时的去修改索引文件.重新加载索引文