Jsoup,如何检查是否有<a>元素?



我目前正试图将我的谷歌外卖从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>&emsp;Google
                Suche<br><b>Standorte:</b><br>&emsp;<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>&emsp;Diese Aktivität wurde in Ihrem Google-Konto
                gespeichert, weil die folgenden Einstellungen aktiviert waren:&nbsp;Web- &amp; App-Aktivitäten.&nbsp;<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>&emsp;Google
                Suche<br><b>Warum steht das hier?</b><br>&emsp;Diese Aktivität wurde in Ihrem Google-Konto gespeichert,
                weil die folgenden Einstellungen aktiviert waren:&nbsp;Web- &amp; App-Aktivitäten.&nbsp;<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

相关内容

  • 没有找到相关文章

最新更新