【问题标题】:get table span class content using jsoup使用 jsoup 获取表跨度类内容
【发布时间】:2015-07-22 09:50:01
【问题描述】:

我有一个网站,其中包含一个看起来与这个相似(更大..)的表格:

</table>    
<tr>
    <td>
        <table width="100%" cellspacing="-1" cellpadding="0" border="0" dir="rtl" style="padding-top: 25px;">
            <tr>
                <td align="right" style="padding-right: 25px;">
                    <span class="artist_name_txt">
                            <a href="/namelink">name</a>
                            <p class="diccografia">subname</p>
                            </span>
                </td>
            </tr>
        </table>
    </td>
</tr>

<tr>
    <td>
        <table width="100%" border="0" cellspacing="0" cellpadding="0" dir="rtl" style="padding-right: 25px; padding-left: 25px">

                <tr>
                        <td class="songs" align="right">

                                <a href="/number1link" class="artist_player_songlist">  number1</a>

                            </td>
                    </tr>
                <tr>
                        <td class="songs" align="right">

                                <a href="/number2link" class="artist_player_songlist">number2</a>


.......
            </td>   
        </tr>
</table>

我需要知道如何解析网站并将此表提取到 2 个数组中 -

  • 一个类似于名称{number1, number2}
  • 第二个是链接{number1link, number2link}

我尝试了很多方法,但没有什么能真正帮助我。

【问题讨论】:

    标签: java android html jsoup


    【解决方案1】:

    您应该阅读JSoup Cookbook - 特别是Selector syntax 非常强大。

    这是一个例子:

    final String html = ...
    // use connect().get() instead if you connect to an website
    Document doc = Jsoup.parse(html); 
    List<String> names = new ArrayList<>();
    List<String> links = new ArrayList<>();
    
    for( Element element : doc.select("a.artist_player_songlist") )
    {
        names.add(element.text());
        links.add(element.attr("href"));
    }
    
    System.out.println("Names: " + names);
    System.out.println("Links: " + links);
    

    输出:

    Names: [number1, number2]  
    Links: [/number1link, /number2link]
    

    【讨论】:

    • 好吧,我认为该代码只工作了一次,我不知道为什么,但是当我使用 doc = Jsoup.connect(url).get(); (对于这个 url shironet.mako.co.il/artist?type=works&lang=1&prfid=975),我得到了这个 html: 而不是正常的页面 html,我认为这可能是因为此页面中的广告.. 有什么理由忽略此广告?(或者这里有其他问题?)
    • 该代码适用于您描述的问题。它不适用于新链接,因为有一个 javascript 并且 jsoup 不支持 JS 执行。但是,并非所有内容都丢失了 - 您可以将 Jsoup 与 JS 库结合使用。请参阅here 获取一些示例。 Jsoup + HtmlUnit 已经证明是一个很好的组合。
    • 感谢您的评论,但我知道我不能在 android 中使用 Htmlunit,有什么替代方法?有一个简单的教程吗?
    • 您也可以尝试我的链接答案中列出的其他人。我将在我的答案中编辑一些(希望如此)有用的讨论(cmets 中没有足够的空间)。
    • 好的,谢谢,我会尽快尝试,如果可行,我会更新,你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2012-01-03
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多