网络爬虫之html获取和解析(Java)

网络爬虫之html获取和解析
       最近同学让帮忙写一个网页分析程序以获取网页中相关内容。为此,忙活了两天,终于写了一个从网页中获取表格内容程序。虽然比较简单,但是想了想,能够为那些想写网络爬虫程序筒子们提供一定帮助。网页分析和内容获取是网络爬虫中必不可少的步骤。
       一个完整的网络爬虫包含了接个步骤:
       1. 获取对应url的html内容。
       2. 分析html内容,获取链接。
       3. 不断迭代前两个步骤,直到喊停。
       其实不难发现,真正关键的是后面两个步骤,第一个是html内容的分析,其次就是迭代算法设计也就是实际的爬虫策略设计。而我们现在主要讨论第一个部分html内容的分析,接下来我们主要介绍网上一个比较直到jar包,htmlparse如何对html进行分析,以获取html想要内容,另外要说明的是,本文并没有对htmlparse进行更详细的描述,只是告知如何使用htmlparse达到你的分析html的目的。更深层次的使用,还需筒子们自己去学习和挖掘。
       在学习之前,先分享一下htmlparse的wiki网址以及下载地址:
              wiki:  http://htmlparser.sourceforge.net/
       下载链接: http://sourceforge.net/projects/htmlparser/files/Integration-Builds/2.0-20060923/
       下载完后,看完htmlparse后,htmlparse包含如下几个jar包:filterbuilder.jar、htmlexer.jar、htmlparser.jar、sitecapture.jar、thumblina.jar。
       htmlexer.jar负责html词法构成,我是这么理解的。整个htmlparser将html每一个标签例如html、p、div、table都称为tag。整个htmlexer可以看作是对html整个页面标签的解释。htmlparser.jar的主要功能则是对html进行解析,然后利用过滤条件获取你想要的内容。
       简要描述后,看看我这两天的工作吧。
       首先首先是获取种子url对应的html内容,这个jdk中包含了对应的url和urlconnection可以帮我们完成,具体看如下代码:
      
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;




public class HtmlRetrieve {
	
	/**
	 * @param html_url the url of html.
	 * @return if url is not exist, return null else return the content of html.
	 * */
	public String GetContentOfHtml(String html_url){
		URL url;
	    try {
	    	url = new URL(html_url);
	    	HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
			if(urlConn != null)
			{
				urlConn.connect();
				BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream(),HtmlEncoding.gbk_encoding));
				StringBuffer strBuffer = new StringBuffer();
				String line;
				while((line = reader.readLine())!=nul
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值