htmlparser.框架,是解析网页的。
创新互联专注于溪湖企业网站建设,响应式网站开发,商城网站建设。溪湖网站建设公司,为溪湖等地区提供建站服务。全流程按需求定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或
提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。
毫不夸张地说,htmlparser就是目前最好的html解析和分析的工具。
无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。
jsoup也是。
Java 程序在解析HTML 文档时,相信大家都接触过htmlparser 这个开源项目,我曾经在IBM DW
上发表过两篇关于htmlparser 的文章,分别是:从HTML中攫取你所需的信息 和扩展HTMLParser
对自定义标签的处理能力。但现在我已经不再使用htmlparser 了,原因是htmlparser 很少更新,但最重要的是有了jsoup 。
1.编写useSourceViewer 类的基本框架,该类仅包括无返回值的main ()方法,该方法从参数中获取URL,通过输入缓冲和输出缓冲将该URL 原码输出。
2.编写useSourceViewer 类,代码如下:
import java.net.*;
import java.io.*;
public class useSourceViewer
{
public static void main (String[] args)
{
if (args.length 0)
{
try
{
//读入URL
URL u = new URL(args[0]);
InputStream in = u.openStream( );
// 为增加性能存储输入流
in = new BufferedInputStream(in);
// 将输入流连接到阅读器
Reader r = new InputStreamReader(in);
int c;
while ((c = r.read( )) != -1)
{
System.out.print((char) c);
}
Object o = u.getContent( );
System.out.println("I got a " + o.getClass().getName( ));
}
catch (MalformedURLException e)
{
System.err.println(args[0] + " is not a parseable URL");
}
catch (IOException e)
{
System.err.println(e);
}
} // end if
} // end main
} // end SourceViewer}
只能抓取静态的页面源代码,因为很多事件和样式是动态绑定和执行的,所以不可能获取到执行完后的代码的。
public
String
getHtmlContent(String
htmlurl)
{
URL
url;
String
temp;
StringBuffer
sb
=
new
StringBuffer();
try
{
url
=
new
URL(htmlurl);
BufferedReader
in
=
new
BufferedReader(new
InputStreamReader(url.openStream(),
"gbk"));
while
((temp
=
in.readLine())
!=
null)
{
sb.append(temp);
}
in.close();
}
catch
(final
MalformedURLException
me)
{
me.getMessage();
}
catch
(final
IOException
e)
{
e.printStackTrace();
}
return
sb.toString();
}
javascript获取网页源码,测试了能通过的,你试下!
你把 l t ; g t;的空格删了,因为百度不允许那些字符。
html
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
titletest/title
/head
body
关于百度页面;p=irol-homeprofile源码内容如下:br /
div id="t1"/div
script type="text/javascript"
function createXmlHttpRequest()
{
try {return new XMLHttpRequest();}
catch(e)
{
return new ActiveXObject("Microsoft.XMLHTTP");}
}
var xmlHttp = createXmlHttpRequest();
xmlHttp.open("get", ";p=irol-homeprofile",false);
xmlHttp.send();
if(xmlHttp.readyState == 4 xmlHttp.status == 200)
{
str = xmlHttp.responseText;//str即为返回的html内容
var str1 = new RegExp("","g");
var str2 = new RegExp("","g");
var str3 = new RegExp("\r","g");
str=str.replace(str2," l t ;"); //把空格删了,百度会把那些字符替换掉,不得已打空格
str=str.replace(str1," g t ;"); //把空格删了,百度会把那些字符替换掉,不得已打空格
str=str.replace(str3,"br /");
document.getElementById("t1").innerHTML = str;
}
/script
/body
/html
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpTest {
String urlString;
public static void main(String[] args) throws Exception {
HttpTest client = new HttpTest(网址);
client.run();
}
public HttpTest(String urlString) {
this.urlString = urlString;
}
public void run() throws Exception {
//生成一个URL对象
URL url = new URL(urlString);
//打开URL
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//得到输入流,即获得了网页的内容
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection
.getInputStream()));
String line;
// 读取输入流的数据,并显示
while ((line = reader.readLine()) != null){
System.out.println(line);
}
}
}
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpTest {
private String u;
private String encoding;
public static void main(String[] args) throws Exception {
HttpTest client = new HttpTest("", "UTF-8");
client.run();
}
public HttpTest(String u, String encoding) {
this.u = u;
this.encoding = encoding;
}
public void run() throws Exception {
URL url = new URL(u);// 根据链接(字符串格式),生成一个URL对象
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();// 打开URL
BufferedReader reader = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream(), encoding));// 得到输入流,即获得了网页的内容
String line; // 读取输入流的数据,并显示
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……