使用Java解析<ul class =“news-list”> </ul>

时间:2013-01-15 19:51:09

标签: java html parsing

如何使用Java解析具有特定类类型的HTML文档中的ul元素? 我想从HTML中解析这一部分:

<ul class="news-list">            

            <li>
                <a onclick="AjaxStatManager('Content','1258')" href="http://www.gyte.edu.tr/icerik/120/1258/kim-101-final-mazeret-sinavi.aspx" target="_self"> 
                    <div class="text">
                        <h2>KİM 101 Final Mazeret Sınavı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1248')" href="http://www.gyte.edu.tr/icerik/120/1248/butunleme-sinav-tarihleri.aspx" target="_self"> 
                    <div class="text">
                        <h2>Bütünleme Sınav Tarihleri</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1242')" href="http://www.gyte.edu.tr/icerik/120/1242/bil-374-internet-teknolojileri-final-sinavi.aspx" target="_self"> 
                    <div class="text">
                        <h2>Bil 374 İnternet Teknolojileri Final Sınavı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1241')" href="http://www.gyte.edu.tr/icerik/120/1241/kim101-final-sinavi.aspx" target="_self"> 
                    <div class="text">
                        <h2>Kim101 Final Sınavı </h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1222')" href="/Files/UserFiles/85/duyurular/yeterlilik.pdf" target="_self"> 
                    <div class="text">
                        <h2>Doktora Yeterlilik Sınav Tarihleri</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1221')" href="/Files/UserFiles/85/duyurular/duyuru-dokt-seminer.pdf" target="_self"> 
                    <div class="text">
                        <h2>Doktora Programı Adaylarına Önemli Duyuru</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1127')" href="http://www.gyte.edu.tr/icerik/120/1127/20122013-egitimogretim-yili-guz-yari-yili--final-programi.aspx" target="_self"> 
                    <div class="text">
                        <h2>2012-2013 Eğitim-Öğretim Yılı Güz Yarı Yılı  Final Programı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1109')" href="/Files/UserFiles/85/duyurular/Yüksek Lisans  Doktora Seminer I ve II Sunum Takvimi.pdf" target="_self"> 
                    <div class="text">
                        <h2>Yüksek Lisans / Doktora Seminer I ve II Sunum Takvimi</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','998')" href="http://www.gyte.edu.tr/icerik/120/998/bilgisayar-muhendisligi-bolumu-20122013-guz-yari-yili-ders-programlari.aspx" target="_self"> 
                    <div class="text">
                        <h2>Bilgisayar Mühendisliği Bölümü 2012-2013 Güz Yarı Yılı Ders Programları</h2>
                        <p>Bilgisayar Mühendisliği Bölümü 2012-2013 Güz Yarı Yılı Ders Programları</p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1101')" href="http://www.gyte.edu.tr/icerik/120/1101/kim-101-kimya-dersi---ii-vizesi.aspx" target="_self"> 
                    <div class="text">
                        <h2>KİM 101 Kimya Dersi   II .vizesi</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1073')" href="/Files/duyuru/bilgisayar_muh/Yuksek_lisans_-_Doktora_Seminer_I_-_II.pdf" target="_self"> 
                    <div class="text">
                        <h2>Yüksek Lisans/Doktora Seminer I ve II Ders Planı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1058')" href="/Files/duyuru/bilgisayar_muh/bil495-496syl.pdf" target="_self"> 
                    <div class="text">
                        <h2>BIL 495/496 Bitirme Projesi Ders Planı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','1006')" href="/Files/duyuru/bilgisayar_muh/duy-ders2013guz_1.doc" target="_self"> 
                    <div class="text">
                        <h2>G.Y.T.E. Lisans Üstü Öğrencilerinin Dikkatine</h2>
                        <p></p>

                    </div>
                </a>
            </li>

            <li>
                <a onclick="AjaxStatManager('Content','984')" href="http://www.gyte.edu.tr/icerik/120/984/bil-341-programlama-dilleri-butunleme-sinavi.aspx" target="_self"> 
                    <div class="text">
                        <h2>BİL 341 Programlama Dilleri bütünleme sınavı</h2>
                        <p></p>

                    </div>
                </a>
            </li>

</ul>

我有以下代码要解析,但它不起作用:

try {
        URL url = new URL("http://www.gyte.edu.tr/kategori/120/0/duyurular.aspx");
        HTMLEditorKit kit = new HTMLEditorKit();
        HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
        doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
        Reader HTMLReader = new InputStreamReader(url.openConnection().getInputStream());
        kit.read(HTMLReader, doc, 0);
        ElementIterator it = new ElementIterator(doc);
        Element elem;

        while ((elem = it.next()) != null) {
            AttributeSet as = elem.getAttributes();

            if (as.containsAttribute("class", "news-list")) {
                int c = elem.getElementCount();
                System.out.println("Element count = " + c);
            }
        }

    } catch (IOException | BadLocationException e) {
        e.printStackTrace();
        return e.getMessage();
    }

    return "Success!";

3 个答案:

答案 0 :(得分:2)

您可以将其加载到Document对象中。这将为您读取HTML,您可以使用可用的方法进行迭代/查询。

答案 1 :(得分:1)

我认为它适用于XPATH查询。

XPath xpath = XPathFactory.newInstance().newXPath(); 
String expression= "//ul[@class = 'news-list']"; 
InputSource inputSource = new InputSource("your.html"); 
NodeSet nodes = (NodeSet) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

答案 2 :(得分:0)

这是JSoup解决方案:

try {
    Document doc = Jsoup.parse(new URL("http://www.gyte.edu.tr/kategori/120/0/duyurular.aspx"), 1000000);
    Elements elements = doc.getElementsByAttributeValue("class", "news-list");
    System.out.println(elements.size());

    for (Element e : elements) {
        System.out.println(e.toString());
    }
} catch (Exception e) {
    e.printStackTrace();
}

和输出:

 <ul class="news-list"> 
 <li> <a onclick="AjaxStatManager('Content','1258')" href="http://www.gyte.edu.tr/icerik/120/1258/kim-101-final-mazeret-sinavi.aspx" target="_self"> 
   <div class="text"> 
    <h2>KİM 101 Final Mazeret Sınavı</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1248')" href="http://www.gyte.edu.tr/icerik/120/1248/butunleme-sinav-tarihleri.aspx" target="_self"> 
   <div class="text"> 
    <h2>B&uuml;t&uuml;nleme Sınav Tarihleri</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1242')" href="http://www.gyte.edu.tr/icerik/120/1242/bil-374-internet-teknolojileri-final-sinavi.aspx" target="_self"> 
   <div class="text"> 
    <h2>Bil 374 İnternet Teknolojileri Final Sınavı</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1241')" href="http://www.gyte.edu.tr/icerik/120/1241/kim101-final-sinavi.aspx" target="_self"> 
   <div class="text"> 
    <h2>Kim101 Final Sınavı </h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1222')" href="/Files/UserFiles/85/duyurular/yeterlilik.pdf" target="_self"> 
   <div class="text"> 
    <h2>Doktora Yeterlilik Sınav Tarihleri</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1221')" href="/Files/UserFiles/85/duyurular/duyuru-dokt-seminer.pdf" target="_self"> 
   <div class="text"> 
    <h2>Doktora Programı Adaylarına &Ouml;nemli Duyuru</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1127')" href="http://www.gyte.edu.tr/icerik/120/1127/20122013-egitimogretim-yili-guz-yari-yili--final-programi.aspx" target="_self"> 
   <div class="text"> 
    <h2>2012-2013 Eğitim-&Ouml;ğretim Yılı G&uuml;z Yarı Yılı Final Programı</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1109')" href="/Files/UserFiles/85/duyurular/Y&uuml;ksek Lisans  Doktora Seminer I ve II Sunum Takvimi.pdf" target="_self"> 
   <div class="text"> 
    <h2>Y&uuml;ksek Lisans / Doktora Seminer I ve II Sunum Takvimi</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','998')" href="http://www.gyte.edu.tr/icerik/120/998/bilgisayar-muhendisligi-bolumu-20122013-guz-yari-yili-ders-programlari.aspx" target="_self"> 
   <div class="text"> 
    <h2>Bilgisayar M&uuml;hendisliği B&ouml;l&uuml;m&uuml; 2012-2013 G&uuml;z Yarı Yılı Ders Programları</h2> 
    <p>Bilgisayar M&uuml;hendisliği B&ouml;l&uuml;m&uuml; 2012-2013 G&uuml;z Yarı Yılı Ders Programları</p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1101')" href="http://www.gyte.edu.tr/icerik/120/1101/kim-101-kimya-dersi---ii-vizesi.aspx" target="_self"> 
   <div class="text"> 
    <h2>KİM 101 Kimya Dersi II .vizesi</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1073')" href="/Files/duyuru/bilgisayar_muh/Yuksek_lisans_-_Doktora_Seminer_I_-_II.pdf" target="_self"> 
   <div class="text"> 
    <h2>Y&uuml;ksek Lisans/Doktora Seminer I ve II Ders Planı</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1058')" href="/Files/duyuru/bilgisayar_muh/bil495-496syl.pdf" target="_self"> 
   <div class="text"> 
    <h2>BIL 495/496 Bitirme Projesi Ders Planı</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','1006')" href="/Files/duyuru/bilgisayar_muh/duy-ders2013guz_1.doc" target="_self"> 
   <div class="text"> 
    <h2>G.Y.T.E. Lisans &Uuml;st&uuml; &Ouml;ğrencilerinin Dikkatine</h2> 
    <p></p> 
   </div> </a> </li> 
 <li> <a onclick="AjaxStatManager('Content','984')" href="http://www.gyte.edu.tr/icerik/120/984/bil-341-programlama-dilleri-butunleme-sinavi.aspx" target="_self"> 
   <div class="text"> 
    <h2>BİL 341 Programlama Dilleri b&uuml;t&uuml;nleme sınavı</h2> 
    <p></p> 
   </div> </a> </li> 
</ul>