gpt4 book ai didi

java - Jsoup 解析写入文件时的 html 重复项

转载 作者:行者123 更新时间:2023-12-01 12:29:20 26 4
gpt4 key购买 nike

我似乎遇到此错误,其中文本被写入文件两次,第一次格式不正确,第二次格式正确。 The method below takes in this URL after it's been converted properly.该方法应该在分隔符的所有子项的文本转换之间打印换行符,这些子项是所有正文文本所在的分隔符“ffaq”的子项。任何帮助,将不胜感激。我对使用 jsoup 还很陌生,所以解释一下也很好。

/**
* Method to deal with HTML 5 Gamefaq entries.
* @param url The location of the HTML 5 entry to read.
**/
public static void htmlDocReader(URL url) {
try {
Document doc = Jsoup.parse(url.openStream(), "UTF-8", url.toString());
//parse pagination label
String[] num = doc.select("div.span12").
select("ul.paginate").
select("li").
first().
text().
split("\\s+");
//get the max page number
final int max_pagenum = Integer.parseInt(num[num.length - 1]);

//create a new file based on the url path
File file = urlFile(url);
PrintWriter outFile = new PrintWriter(file, "UTF-8");

//Add every page to the text file
for(int i = 0; i < max_pagenum; i++) {
//if not the first page then change the url
if(i != 0) {
String new_url = url.toString() + "?page=" + i;
doc = Jsoup.parse(new URL(new_url).openStream(), "UTF-8",
new_url.toString());
}
Elements walkthroughs = doc.select("div.ffaq");
for(Element elem : walkthroughs.select("div")) {
for(Element inner : elem.children()) {
outFile.println(inner.text());
}
}
}
outFile.close();
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
}
}

最佳答案

对于您调用 text() 的每个元素,您将打印其结构的所有文本。假设下面的例子

<div>
text of div
<span>text of span</span>
</div>

如果您为 div 元素 调用 text(),您将得到

text of div text of span

然后如果你为span调用text()你会得到

text of span

为了避免重复,您需要使用ownText()。这将仅获取元素的直接文本,而不是其子元素的文本。

长话短说改变这个

for(Element elem : walkthroughs.select("div")) {
for(Element inner : elem.children()) {
outFile.println(inner.text());
}
}

至此

for(Element elem : walkthroughs.select("div")) {
for(Element inner : elem.children()) {
String line = inner.ownText().trim();
if(!line.equals("")) //Skip empty lines
outFile.println(line);
}
}

关于java - Jsoup 解析写入文件时的 html 重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26072431/

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