1

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!";
4

3 に答える 3

2

それをDocumentオブジェクトにロードできます。これによりHTMLが読み込まれ、使用可能なメソッドを使用して反復/クエリを実行できます。

于 2013-01-15T19:54:06.157 に答える
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);
于 2013-01-15T20:51:41.433 に答える
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>
于 2013-01-15T21:32:39.633 に答える