htmlparser 基本解析网站

本文介绍了一个名为httpparser的开源项目,该解析器主要用于解析HTML内容。文章详细展示了如何利用httpparser的Parser类进行网页内容的抓取,并通过设置不同的过滤器(Filter)来实现对特定元素的选择。此外还提供了自定义标签和属性过滤的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


httpparser 是一个开源的项目的 主要有两种方式进行解析
  主要操作类是parser类
  Parser parser=new Parser(httpUrlConnection(new URL(url)))
  parser.setInputHtml(getHtml(str)); //用流的形式进行解析 防止乱码
  parser.rerest();使用解析器重新选择条件解析
//获取html文本内容
    public static String getHtml(String urlAddress) {
        BufferedReader buff = null;
        HttpURLConnection urlconn = null;
        String html = null;
        try {
            URL url = new URL(urlAddress);
            urlconn = (HttpURLConnection) url.openConnection();
            urlconn.setConnectTimeout(10000);
            urlconn.setReadTimeout(70000);
            // 设置通用的请求属性
            urlconn.setRequestProperty("accept", "*/*");
            urlconn.setRequestProperty("connection", "Keep-Alive");
            urlconn.setRequestProperty("user-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            urlconn.setRequestProperty("Content-type", "text/html");
            // urlconn.setRequestProperty("Accept-Charset", "utf-8");
            // urlconn.setRequestProperty("contentType", "GBK");
            urlconn.setDoInput(true);
            urlconn.setDoOutput(true);
            urlconn.setRequestMethod("GET");
            // 建立连接
            // System.out.println(urlconn.getContentType());
            urlconn.connect();
            InputStreamReader inputStreamReader = new InputStreamReader(urlconn.getInputStream(), "GBK");
            buff = new BufferedReader(inputStreamReader);
            StringBuilder sb = new StringBuilder();
            String s = null;
            if (null != buff) {
                while (null != (s = buff.readLine())) { // 读取页面内容
                    s = new String(s.getBytes(), "GBK");
                    // System.out.println(s + "\t\t");
                    sb.append(s + "\n");
                }
                html = sb.toString();
                // System.out.println(html);

            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != buff) {
                    buff.close();
                }
                if (null != urlconn) {
                    urlconn.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return html;
        }
    }

}

1.Filter类
2.visitor类

Filter类有
 自定义标签类
PrototypicalNodeFactory pnfPrototypicalNodeFactory = new PrototypicalNodeFactory();  //生成节点工厂实
pnfPrototypicalNodeFactory.registerTag(new IFrameTag()); //注册标签
parser.setNodeFactory(pnfPrototypicalNodeFactory); // 设置解析器的标签库
TagNameFilter
HasAttarbuiterFilter (attr,defaultvlaue)'
 下面通过样式进行解析
HasAttributeFilter attrFilter = new HasAttributeFilter("class", attr);
NodeList nodeList3 = parser.extractAllNodesThatMatch(attrFilter);
NodeIterator iterator1 = nodeList3.elements();



节点类型:

TextNode
TagNode
compositeNode 复合节点
 
属性有哪些
getText()
toPlainText() //得到纯文本
toHtml() 得到Html


export JAVA_HOME=/data/boss_linux/jdk1.6.0_24
export JAVA_BIN=/data/boss_linux/jdk1.6.0_24/bin
export PATH=$PATH:$JAVA_HOME/bin:/url/local/jad/jad_linux
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值