簡體   English   中英

無法通過jsoup從html提取我想要的元素

[英]Can not extract the elements i want from html by jsoup

頁面在這里http://www.yildiz.edu.tr/etkinlikler/

它的來源:view-source: http : //www.yildiz.edu.tr/etkinlikler/

我不想放截圖,因為它真的很長。 我將不得不放很多屏幕截圖。

我要拿這個

title: 'ss Event',
start: new Date(y, m, 1)

並非全部,僅在標題和日期之后。

但是似乎沒有類或其他標頭,因為它在javascript類中:

 </div>
    </div>
</div>


</div>    </div>
</div>    <script>
    $(document).ready(function() {

        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: false,
        events: [
                    {
                title: 'birthday party',
                start: new Date(2015, 9, 26),
                                    end: new Date(2015, 10, 13),
                                    url: 'http://www.yildiz.edu.tr/etkinlikler/Uygarlıkların Geçiş Yolu  &  Anadolu Peyzajı/237'

            },


{
                title: 'Concert',
                start: new Date(2015, 5, 12),
                                    end: new Date(2015, 5, 19),
                                    url: 'http://www.yildiz.edu.tr/etkinlikler/İki Seçki İki Salon İki Sergi/233'

            },

                        ]
    });

});

</script>

    <style type='text/css'>
        #calendar {
            width: 900px;
            margin: 0 auto;
            }

</style>

我試過了

Elements event = document.select("#events");

但它不起作用。我應該使用其他工具嗎?

您需要使用其他東西。 Jsoup不允許您使用Java腳本,而只能使用HTML解析樹。

最多可以使用document.select(“ script”)。get(1).toString()獲得整個腳本文本。

獲得腳本文本后,您可能會考慮其他選項,例如正則表達式,或者某些滿足您要求的Javascript解析工具。

Document doc = Jsoup.connect("http://www.yildiz.edu.tr/etkinlikler/").get();
String script = doc.select("script").get(10).toString();
String pattern = "\\{\\s*title\\s*:\\s*(.*),\\s*start\\s*:\\s*(.*),\\s*end.*";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(script);
while (m.find()) {
    System.out.println(m.group(1) + " -> " + m.group(2));
}

輸出:

'Long Event' -> new Date(y, m, d-5)
'Lunch' -> new Date(y, m, d, 12, 0)
'Birthday Party' -> new Date(y, m, d+1, 19, 0)
'Kemal Gök Fotoğraf Sergisi :Kentleşme Sürecinde Çocuk İşçiler' -> new Date(2015, 10, 17)
'Uygarlıkların Geçiş Yolu  &  Anadolu Peyzajı' -> new Date(2015, 9, 26)
'Vizöre Çarpanlar' -> new Date(2015, 8, 9)
'İki Seçki İki Salon İki Sergi' -> new Date(2015, 5, 12)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM