想从网页中提取标签,哪中方法比较合适,求指点?

发布于 2021-11-04 20:17:33 字数 109 浏览 784 评论 10

我想对诸如html、xml等网页文件进行处理,只保留标签及标签名以及属性,文本和注释均不要,我也看了好多包诸如htmlparse、jsoup、sax、dom4j等,不知道采用哪种方法比较好做,求指点,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

成熟稳重的好男人 2021-11-09 01:01:55

java -Xmx1024m 这样来运行,应该不内存不够了吧

把回忆走一遍 2021-11-09 01:01:46

还是不行啊!

旧城烟雨 2021-11-09 00:58:34

搞那么大的HTML,继续加大,要不就是哪里出问题了

草莓味的萝莉 2021-11-09 00:56:10

如何利用jsoup把标签中的属性全部删除?谢谢

狠疯拽 2021-11-09 00:49:52

我利用Jsoup和正则表达式写了个程序,可以删除注释和文本,但是当网页大于10MB时就会出现内存溢出的错误,不知道为什们,我的程序是:

import java.io.BufferedReader;
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.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;

 
public class Test { 
    private static String text;

    public static void main(String []args) throws Exception{
         Test t= new Test();
         t.test();
    }
    public void test() throws IOException{
        BufferedReader buf=null;
        buf=new BufferedReader(new InputStreamReader(System.in));
        String s=null;
        System.out.print("请输入文件路径:");
        try{
            s=buf.readLine();
        }catch(IOException e){
            e.printStackTrace();
        }
        System.out.println(s);
        File f=new File(s);
        //File f=new File("d:"+File.separator+"test");//新建根目录
        String str[]=f.list();//获得文件序列
        for(int i=0;i<str.length;i++){
            File f1=new File(f+File.separator+str[i]);
            //File f1=new File("d:"+File.separator+"test"+File.separator+str[i]);//新建并获得文件目录
            Document doc = Jsoup.parse(f1,"UTF-8","http://www.html.net/");//利用Jsoup对获得的网页进行解析
            Document doc2 = Jsoup.parse(f1, "UTF-8");
            String str2=doc.html();
            str2=str2.replaceAll("<!.+>","");//删除注释
            str2=str2.replaceAll("<!--[\s\S]*?-->","");//删除注释
            str2=str2.replaceAll("<![\s\S]*?-->","");//删除注释
            String regex = "<[^>]+>";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(str2);
            StringBuilder sb = new StringBuilder();
            while(m.find()){
                sb.append(m.group());
            }
            String newStr = sb.toString();
            Document ndoc=Jsoup.parse(newStr);
            File nf=new File("d:"+File.separator+"test_back");//新建一个文件夹目录
            nf.mkdir();//新建文件夹
            File output= new File("d:"+File.separator+"test_back"+File.separator+str[i]);//定义输出地址
            output.createNewFile();//新建输出文件
            OutputStreamWriter outputsw = new OutputStreamWriter(new FileOutputStream("d:"+File.separator+"test_back"+File.separator+str[i]), "UTF-8");
            outputsw.write(ndoc.html());
            outputsw.close();
        }
    }
}
残花月 2021-11-08 23:54:16

正则很强大,不过起来写起来很麻烦额

情绪失控 2021-11-08 19:45:37

提取信息的话,正则强大。

德意的啸 2021-11-08 11:47:59

正则

因为看清所以看轻 2021-11-08 07:16:43

我利用Jsoup和正则表达式写了个程序,可以删除注释和文本,但是当网页大于10MB时就会出现内存溢出的错误,不知道为什们。

平定天下 2021-11-05 03:52:07

jsoup 最牛X

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文