0

我正在使用 JSOUP 开发 android 应用程序来解析 HTML。

我有 HTML 语法

    <div class='wrapper'>   
<div style='margin:7px;'>
    <div class='box' style='height:595px'>
        <div class='boxtitlebox'>
            <div class='boxtitle'><h4>13 RECENT CHORDS</h4></div><div class='clear'></div>
        </div>

        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/9742/ungu-apa-sih-maumu-kord-lirik-lagu'>           
            <div class='subtitle'>Chord Ungu</div>
            <div class='title'>Apa Sih Maumu</div>
        </a></div>
        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/6826/slank-boneka-tersayang-kord-lirik-lagu'>           
            <div class='subtitle'>Chord Slank</div>
            <div class='title'>Boneka Tersayang</div>
        </a></div>
        <div class='listitem'><a href='http://www.chordfrenzy.com/chord/6751/ari-lasso-rayuan-gombal-kord-lirik-lagu'>          
            <div class='subtitle'>Chord Ari Lasso</div>
            <div class='title'>Rayuan Gombal</div>
        </a></div>
        </div>
</div>
 </div>

现在,我很困惑如何获得上面的每个ahrefsubtitletitle

我需要它来像这样填充我的数组

String[] link=["http://www.chordfrenzy.com/chord/9742/ungu-apa-sih-maumu-kord-lirik-lagu","http://www.chordfrenzy.com/chord/6826/slank-boneka-tersayang-kord-lirik-lagu","http://www.chordfrenzy.com/chord/6751/ari-lasso-rayuan-gombal-kord-lirik-lagu"];
String[] subtitile=["Chord Ungu","Chord Slank","Chord Ari Lasso"];
String[] title=["Apa Sih Maumu","Boneka Tersayang","Rayuan Gombal"];

任何想法?

4

3 回答 3

5

一般来说,您应该更喜欢Selector API而不是 DOM ( getElementsByX)

这是一个例子:

Document doc = Jsoup.parse(html);


// Links
List<String> links = new ArrayList<>();

for( Element element : doc.select("a[href]") )
{
    links.add(element.attr("href"));
}


// Subtitles
List<String> subtitles = new ArrayList<>();

for( Element element : doc.select("div[class=subtitle]") )
{
    subtitles.add(element.text());
}


// Titles
List<String> titles = new ArrayList<>();

for( Element element : doc.select("div[class=title]") )
{
    titles.add(element.text());
}

元素由标签和属性选择,如果标签不同或不相关,您可以删除它们(例如,[class=title]代替div[class=title])。查看 Selector API(上面的链接)以获取更多提示。

于 2012-09-23T16:44:42.637 回答
1
 Document document = Jsoup.parse(html);

         Elements hrefElements = document.select("div.listitem");

         String[] links = new String[hrefElements.size()];
         String[] title = new String[hrefElements.size()];
         String[] subtitle = new String[hrefElements.size()];

         for(int i=0;i<hrefElements.size();i++)
         {
             links[i] = hrefElements.get(i).getElementsByTag("a").attr("href");
             title[i] = hrefElements.get(i).getElementsByClass("title").text();
             subtitle[i] = hrefElements.get(i).getElementsByClass("subtitle").text();
         }


         for(int j=0;j<hrefElements.size();j++)
         {
             System.out.println("Links: "+links[j]);
             System.out.println("Title: "+title[j]);
             System.out.println("SubTitle: "+subtitle[j]);
         }
于 2012-09-28T08:15:42.380 回答
0

我认为ArrayList结构比字符串数组更好

Elements links = doc.getElementsByClass("listitem");
Elements subtitles = doc.getElementsByClass("subtitle");
Elements titles = doc.getElementsByClass("title");
List<String> link = new ArrayList<String>();
List<String> subtitile = new ArrayList<String>();
List<String> title = new ArrayList<String>();
for (Element e : links) {
    String href = e.getElementsByAttribute("href").first().attr("href");
    link.add(href);
}
for (Element e : subtitles) {
    String s = e.text();
    subtitile.add(s);
}
for (Element e : titles) {
    String s = e.text();
    title.add(s);
}
于 2012-09-22T17:57:52.083 回答