gpt4 book ai didi

java - 从 html 页面收集

内的文本

转载 作者:行者123 更新时间:2023-12-01 15:58:48 25 4
gpt4 key购买 nike

我有一个博客数据集,其中包含大量博客页面,包含博客文章、评论和所有博客功能。我只需要从此集合中提取博客文章并将其存储在 .txt 文件中。我需要修改这个程序,因为这个程序应该收集以 <p> 开头并以 </p> 结尾的博客文章标签,并避免其他标签。

目前我使用 HTMLParser 来完成这项工作,这是我到目前为止所做的:

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.tags.MetaTag;
public class HTMLParserTest {

public static void main(String... args) {
Parser parser = new Parser();

HasAttributeFilter filter = new HasAttributeFilter("P");
try {
parser.setResource("d://Blogs/asample.txt");
NodeList list = parser.parse(filter);
Node node = list.elementAt(0);
if (node instanceof MetaTag) {
MetaTag meta = (MetaTag) node;
String description = meta.getAttribute("content");
System.out.println(description);
}

} catch (ParserException e) {
e.printStackTrace();
}
}
}

提前致谢

最佳答案

如果 HTML 格式正确,以下方法应该可以满足您的需要:

    private static String extractText(File file) throws IOException {
final ArrayList<String> list = new ArrayList<String>();
FileReader reader = new FileReader(file);

ParserDelegator parserDelegator = new ParserDelegator();
ParserCallback parserCallback = new ParserCallback() {
private int append = 0;
public void handleText(final char[] data, final int pos) {
if(append > 0) {
list.add(new String(data));
}
}
public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) {
if (Tag.P.equals(tag)) {
append++;
}
}
public void handleEndTag(Tag tag, final int pos) {
if (Tag.P.equals(tag)) {
append--;
}
}
public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) { }
public void handleComment(final char[] data, final int pos) { }
public void handleError(final java.lang.String errMsg, final int pos) { }
};
parserDelegator.parse(reader, parserCallback, false);
reader.close();

String text = "";
for(String s : list) {
text += " " + s;
}

return text;
}

编辑:更改为处理嵌套 P 标签。

关于java - 从 html 页面收集 <p> 内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com