加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用正则解析html

发布时间:2020-12-14 01:48:15 所属栏目:百科 来源:网络整理
导读:在前面介绍了使用Jsoup解析html,Jsoup也比较强大和方便,不过需要使用第三方包,在只需解析html很少内容的时候,可以考虑用正则表达式查找匹配的内容,下面给一个简单例子,爬取页面中的title标签的文本内容,代码如下: package com.home.parsehtml;import

在前面介绍了使用Jsoup解析html,Jsoup也比较强大和方便,不过需要使用第三方包,在只需解析html很少内容的时候,可以考虑用正则表达式查找匹配的内容,下面给一个简单例子,爬取页面中的title标签的文本内容,代码如下:

package com.home.parsehtml;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
	private Button btn;
	private static final String URL_STR = "http://vip.astro.sina.com.cn/iframe/astro/view/aries/day/";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btn = (Button) findViewById(R.id.main_btn);
		btn.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		if (v == btn) {
			new Thread(r).start();
		}
	}

	Runnable r = new Runnable() {

		@Override
		public void run() {
			String content = getHtmlContent();
			doParse(content);
		}
	};

	/**
	 * 读取html
	 * 
	 * @return
	 */
	protected String getHtmlContent() {
		StringBuffer sb = new StringBuffer();
		BufferedReader br = null;
		try {
			URL url = new URL(URL_STR);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			br = new BufferedReader(new InputStreamReader(
					conn.getInputStream(),"utf-8"));
			String temp;
			while ((temp = br.readLine()) != null) {
				sb.append(temp).append("n");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return sb.toString();
	}

	/**
	 * 使用正则抽取title标签内容
	 * 
	 * @param content
	 */
	protected void doParse(String content) {
		// 匹配<title>开头,</title>结尾的文档
		Pattern p = Pattern.compile("<title>([^</title>]*)");
		Matcher m = p.matcher(content);
		if (m.find()) {
			String title = m.group(1);
			Log.i("title",title);
		}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读