利用jericho和htmlparser对网页进行解析—以读取酒立方的文章为例
研究开源项目jericho,并利用jericho对html进行解析的一些心得体会。
下面只是读取其中文章主题内容的一个例子,展现了jericho读取文章的基本功能。
优点:操作简单,类库强大
缺点:速度不尽人意
下一步:继续研究jericho的代码,并计划对其扩展,提高性能或者结合其他html解析工具对性能进行处理。基本思路:可以从网页下载方面下手。
希望有研究网页爬虫和html解析方面的朋友多提意见。
package cn.com.ossoftware;
import java.net.URL;
import java.util.List;
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.MasonTagTypes;
import net.htmlparser.jericho.MicrosoftTagTypes;
import net.htmlparser.jericho.PHPTagTypes;
import net.htmlparser.jericho.Source;
/**
* 解析www.flzj.com中的文章。
* 1,截取所有的文章,然后分析按分类进行整理导入到新的网站中。
* 2,对内容进行分析整理。
* @author peterwang
*
*/
public class ExtractTextFromJiulifang {public static void main(String[] args) throws Exception {
String sourceUrlString=”http://www.spirits.jiulifang.com/brandy-news/17601.html”;//文章的链接,根据具体情况处理。
//String sourceUrlString=”http://www.flzj.com/html/flxw/quexun/23050.html“;//对法律专家网站文章进行解析
if (args.length==0)
System.err.println(”Using default argument of “”+sourceUrlString+’”‘);
else
sourceUrlString=args[0];
if (sourceUrlString.indexOf(’:')==-1) sourceUrlString=”file:”+sourceUrlString;
MicrosoftTagTypes.register();
PHPTagTypes.register();
PHPTagTypes.PHP_SHORT.deregister(); // remove PHP short tags for this example otherwise they override processing instructions
MasonTagTypes.register();
Source source=new Source(new URL(sourceUrlString));
// Call fullSequentialParse manually as most of the source will be parsed.
source.fullSequentialParse();
System.out.println(”nLinks to other documents:”);
//List<Element> linkElements=source.getAllElements(HTMLElementName.A);
List<Element> linkElements=source.getAllElements(HTMLElementName.DIV);//获得法律专家网站的div标签,后者是对酒立方文章的div标签进行过滤。
//过滤特殊的片断–peter 获得法律专家的文章正文内容
for (Element linkElement : linkElements) {
String href=linkElement.getAttributeValue(”class”);
if (href == null || !href.equalsIgnoreCase(”area_article”)) continue;//具体判断是哪个div,从而对法律专家网站和酒立方网站的文章进行处理
//System.out.println(”peter__________class=”+” <”+href+’>’);
// A element can contain other tags so need to extract the text from it:
/*获得文章文字内容*/
//String label=linkElement.getContent().getTextExtractor().toString();//法律专家和酒立方文章文字进行输出。
//System.out.println(label+” <”+href+’>’);
//element的内容就是html源码。
String label=linkElement.getContent().toString();//html内容输出
System.out.println(label+” <”+href+’>’);
//System.out.println(linkElement.getSource().clearCache());
}
}
}
更多研究jericho的文章,Jericho HTML Parser 研究学习 — http://www.wanghongbo.com/archives/320
输出结果如下:
正确品尝白兰地烈酒的三步骤详解 【文章来源】:新华网 【日期】:2010-01-05 白兰地是以水果为原料,经过发酵、蒸馏、贮藏陈酿而成的蒸馏酒。通常讲白兰地是以葡萄为原料酿制而成的,而以其他水果为原料酿成的白兰地,应冠以原料水果的名称,如苹果白兰地、樱桃白兰地等。 白兰地作为世界四大蒸馏名酒之一,是以法国白兰地品质为代表的。目前世界上产量最大、声誉最高的白兰地是法国科涅克。科涅克是法国夏朗德省的一座古镇,这里有大片的葡萄园,大大小小生产科涅克的工厂比比皆是,年平均产量为500万加仑(纯酒精)科涅克。目前,我国国产白兰地的年产量为2万多吨。 要真正领略白兰地的韵味,就要有正确的品尝方法。白兰地的品尝大致可以分为三步,首先是看酒的清度与颜色。上乘白兰地为琥珀色、晶莹光灿、庄重而不娇艳。第二步是闻香,白兰地除具有葡萄原料的果香外,更主要的需具有常年贮存于橡木桶中,酒与橡木结合而产生的香气,这种香气虽经加水冲稀仍能保持原来的香气特点,用香料配成的酒香气浮,不醇和,并且无贮存的橡木香,冲稀即变味。优质的白兰地味感应具有贮存橡木香,它不仅进口柔软,入腹发热,还有诱人的水果鲜香味和幽雅醇厚的陈酿香味,味韵协调,回味绵延。通过闻香,白兰地质量的好坏可以确定60%。第三步也是最关键的一步,就是入口。第一口用舌尖抿一小滴,让其沿舌尖蔓延整个舌头,再进入喉咙。第二口可以稍多些,进一步领略温柔醇香的独特感觉。 在酒类货架上,到处可见各种牌号的法国白兰地、中国产白兰地及各种中外合资企业生产的白兰地。消费者在选购白兰地时,首先能看到的是产品的外在品质。好的白兰地产品,首先在视觉上就会给人以美的享受:澄清透亮、晶莹光灿,颜色一般为金黄色或者赤金黄色,庄重而不娇艳。白兰地的颜色和色调,在某种程度上反映白兰地贮藏时间的长短和质量的好坏,如果酒液呈暗红或瓦灰色,说明质量较差。 白兰地产品标签上标注的内容,也为消费者选择适合自己的产品提供了重要的信息。一是产品的名称,如果名称为其他水果白兰地(或X.O、VSOP等),则这个产品就不是以葡萄为原料酿成的。二是产品配料,在产品的标签上有配料表的内容,消费者在购买时要看清配料,确认原料是葡萄或其他水果。三是产品等级,不同等级的白兰地品质不同,其价格差异也很悬殊,消费者应该根据自己的个人喜好以及消费水平,参考上面对于白兰地分级的介绍,选择适合的产品。 另外,选购白兰地时,认清白兰地牌号,尽量选择一些名牌和大型企业的产品,这些企业具备较成熟的工艺和完备的技术、设备,质量更有保证。 相关文章: 网友评论 查看全部评论 尚未有评论 我来说两句 评分 -5 -3 -1 - +1 +3 +5 内容 昵称 验证 提交评论 <area_article>
Comments Off