我目前正试图将我的谷歌外卖从HTML转换为CSV文件,以节省内存,从长远来看,并分析此数据。我的代码可以工作,但只有在没有搜索项的元素出现之前才能工作。现在我想检查元素是否存在,但是我不能这样做:(
public class HTMLtoCSV {
public static void main(String[] args) throws IOException {
File input = new File("MeineAktivitäten.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
int i = doc.getElementsByClass("outer-cell mdl-cell mdl-cell--12-col mdl-shadow--2dp").size();
System.out.println("Titel = " + doc.title());
System.out.println("Menge = " + i);
File output = new File("output.csv");
if(!output.exists()){
output.createNewFile();
}
FileWriter fw = new FileWriter("output.csv", true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Type, Datum, Zeit, Suche, Link, Ort");
bw.newLine();
for (int j = 0; j < i; j++) {
String out1 = doc.getElementsByClass("header-cell mdl-cell mdl-cell--12-col").get(j).getElementsByClass("mdl-typography--title").text();
// Test if tag "a" Exists
String out2 = "";
String out4 = "";
// Test if tag "a" Exists when not dont use getElementsByTag
if (doc.getElementsByClass("header-cell mdl-cell mdl-cell--12-col").get(j).getElementsByTag("a").size().) {
out2 = doc.getElementsByClass("content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1").get(j).getElementsByTag("a").get(0).text();
out4 = doc.getElementsByClass("content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1").get(j).getElementsByTag("a").get(0).attr("href");
}
String out3 = Objects.requireNonNull(doc.getElementsByClass("content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1").get(j).getElementsByTag("br").get(0).nextSibling()).toString();
String out5 = doc.getElementsByClass("content-cell mdl-cell mdl-cell--12-col mdl-typography--caption").get(j).getElementsByTag("a").get(0).attr("href");
System.out.println("[Current Position: " + j + "/"+ i + "] " + out1 + ", " + out3 + ", "" + out2 + "", "" + out4 + """ + ", "" + out5 + """);
bw.write(out1 + ", " + out3 + ", "" + out2 + "", "" + out4 + """ + ", "" + out5 + """);
bw.newLine();
}
bw.close();
}
}
我的代码当然不好,但它可以工作(至少在我试图用if排除它之前)。我自己也做过一些尝试,但都没有成功。我希望有人能在这里帮助我。如果有帮助的话,下面是我的输入:
<div class="outer-cell mdl-cell mdl-cell--12-col mdl-shadow--2dp">
<div class="mdl-grid">
<div class="header-cell mdl-cell mdl-cell--12-col"><p class="mdl-typography--title">Google Suche<br></p>
</div>
<div class="content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1">Nach <a
href="https://www.google.com/search?q=Stone">Stone</a> gesucht<br>13.02.2022, 10:35:07
MEZ
</div>
<div class="content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1 mdl-typography--text-right"></div>
<div class="content-cell mdl-cell mdl-cell--12-col mdl-typography--caption"><b>Produkte:</b><br> Google
Suche<br><b>Standorte:</b><br> <a
href="http://GoogleMapsLinkHere">Ungefähre
Gegend</a> - Aus <a href="https://support.google.com/maps/answer/3184808">Meine Orte</a>
(Zuhause)<br><b>Warum steht das hier?</b><br> Diese Aktivität wurde in Ihrem Google-Konto
gespeichert, weil die folgenden Einstellungen aktiviert waren: Web- & App-Aktivitäten. <a
href="https://myaccount.google.com/activitycontrols">Hier können Sie diese Einstellungen
bearbeiten.</a></div>
</div>
</div>
不带标签:
<div class="outer-cell mdl-cell mdl-cell--12-col mdl-shadow--2dp">
<div class="mdl-grid">
<div class="header-cell mdl-cell mdl-cell--12-col"><p class="mdl-typography--title">Google Suche<br></p>
</div>
<div class="content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1">Verwendet: Google Suche<br>12.02.2022,
20:16:29 MEZ
</div>
<div class="content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1 mdl-typography--text-right"></div>
<div class="content-cell mdl-cell mdl-cell--12-col mdl-typography--caption"><b>Produkte:</b><br> Google
Suche<br><b>Warum steht das hier?</b><br> Diese Aktivität wurde in Ihrem Google-Konto gespeichert,
weil die folgenden Einstellungen aktiviert waren: Web- & App-Aktivitäten. <a
href="https://myaccount.google.com/activitycontrols">Hier können Sie diese Einstellungen
bearbeiten.</a></div>
</div>
</div>
if
语句中使用了错误的类名
将其更改为
content-cell mdl-cell mdl-cell--12-col
,并将if语句中的语法错误修复为:
...get(j).getElementsByTag("a").size() > 0