0

我目前正在试验 jsoup,我的目标是从这个零售网站中提取数据,形式如下:

 Title: blabl
 Link: foba
 Grösse: 9999
 KP: FALSE
 Miete: TRUE
 Preis: 1923,23

到目前为止,我已经编写了这个测试程序:

public class jsoup_test {
    public static void main(String[] args) throws IOException {
        String url = "http://derstandard.at/anzeiger/immoweb/Suchergebnis.aspx?Regionen=9&Bezirke=&Arten=&AngebotTyp=&timestamp=1363305908912";
        print("Fetching %s...", url);

        Document doc = Jsoup.connect(url).get();
        Elements price = doc.select("tr.topangebot");
        Elements price1 = doc.select("tr.white");

        System.out.println("--------------------------------"); 
        System.out.println(price);  
        System.out.println("--------------------------------"); 
        System.out.println(price1); 

    }

    private static void print(String msg, Object... args) {
        System.out.println(String.format(msg, args));
    }

}

但是,这个程序给了我这样的数据:

<tr id="ctl00_Body_mc_cErgebnisListe1_ctl02_InseratInfoTR" class="topangebot"> 
 <td class="BildTD" rowspan="2"> <a href="/anzeiger/immoweb/Detail.aspx?InseratID=6847212&amp;FromTopAngebot=true"><img border="0" src="http://images.derstandard.at/t/22/upload/imagesanzeiger/immoupload/2013/02/27/277515f7-f935-4a13-83fb-dbe3af930e28.jpg" alt="" /></a> </td> 
 <td class="TitleTD" rowspan="2"> <span class="neu">TOP!</span> <strong><a href="/anzeiger/immoweb/Detail.aspx?InseratID=6847212&amp;FromTopAngebot=true">Gehobene Qualit&auml;t, Design und exquisite Ausf&uuml;hrung: Dachausbau mit Weitblick und 100 m&sup2; Terrasse</a></strong><br /><a href="/anzeiger/immoweb/Detail.aspx?InseratID=6847212&amp;FromTopAngebot=true">Wien 16.,Ottakring, Dachgeschoss</a><br /><span style="color: gray">Erstbezug, K&uuml;che, Parkettboden, Hauptmiete, Terrasse, Lift, Keller, Altbau, Kabel/Sat-TV, Barrierefrei</span> </td> 
 <td class="GroessenTD" rowspan="2"> <span class="strong">125 m&sup2;</span><br /><span class="strong">4&nbsp;</span>Zimmer </td> 
 <td class="PreisTD" style="border:none;"> <span class="light">Miete</span>&nbsp;2.190&nbsp;<br /> </td> 
</tr>
<tr id="ctl00_Body_mc_cErgebnisListe1_ctl02_MerklisteTR" class="topangebot"> 
 <td class="merkliste"> </td> 
</tr>
<tr id="ctl00_Body_mc_cErgebnisListe1_ctl03_InseratInfoTR" class="topangebot"> 
 <td class="BildTD" rowspan="2"> <a href="/anzeiger/immoweb/Detail.aspx?InseratID=6871213&amp;FromTopAngebot=true"><img border="0" src="http://images.derstandard.at/t/22/upload/imagesanzeiger/immoimporte/justimmo2/files.justimmo.at/public/pic/big/AEs_YegpKC.JPG" alt="" /></a> </td> 
 <td class="TitleTD" rowspan="2"> <span class="neu">TOP!</span> <strong><a href="/anzeiger/immoweb/Detail.aspx?InseratID=6871213&amp;FromTopAngebot=true">HS-IMMO: 14. PREISSENSATION Eckzinshaus 1414m&sup2; Leerstand - Gesamtnutzfl&auml;che 1670m&sup2; + Rohdachboden ca. 700m&sup2; erzielbar ( Baubescheid ) € 1555.-/m&sup2; NFL</a></strong><br /><a href="/anzeiger/immoweb/Detail.aspx?InseratID=6871213&amp;FromTopAngebot=true">Wien 14.,Penzing, Zinshaus</a><br /><span style="color: gray">Parkettboden, Altbau, Kabel/Sat-TV</span> </td> 
 <td class="GroessenTD" rowspan="2"> <span class="strong">1.670 m&sup2;</span><br /> </td> 
 <td class="PreisTD" style="border:none;"> <span class="light">KP</span>&nbsp;2.590.000&nbsp;<br /> </td> 
</tr>...

这不是人类可读的格式。因此我的问题是。如何获得 jsoup,它以我想要的格式直接提取数据?

谢谢你的回复?

4

3 回答 3

1

例如选择标题你需要做这样的事情

String title = doc.select("tr.topangebot > td.TitleTD").first.text();
于 2013-03-15T22:05:58.760 回答
0

如果您知道页面结构,则可以使用 DOM 导航页面:

http://jsoup.org/cookbook/extracting-data/dom-navigation

这个问题有一堆很好的网络爬虫

使用 Java 进行网页抓取

于 2013-03-15T17:04:31.390 回答
0

我喜欢使用 Jsoup,因为它的方法实际上是为 DOM 遍历而构建的。因此,如果您擅长 HTML、CSS 和 Jquery,那么这个库就是为您构建的。是的,Jsoup 方法可能太快了。是的,它可能不适合您的需求。但是,当涉及从任何类型的网站收集任何类型的信息时,Jsoup 足够灵活,可以满足您的需求。

于 2015-05-20T19:37:09.653 回答