使用Jsoup

时间:2016-07-24 02:55:33

标签: java html jsoup screen-scraping

所以我试图使用Jsoup ...

this webpage获取数据

我已尝试查找许多不同的方法并且我已经接近但我不知道如何找到某些统计信息的标签(攻击力量防御等。)

所以,让我们举例说明我想打印出来

'Attack', '15', '99', '200,000,000' 

我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

您可以使用CSS selectors中的Jsoup轻松提取列数据。

.header /* Header settings */
{
    background-color:#000 !important; /*background color black*/
    color:#fff !important; /*font color white*/
    height:200px; /*height of the whole element*/
    font-family:Impact, Charcoal, sans-serif; /*font of the text*/
}

body /*background of the page*/
{
    background:#ffb3b3 !important; /*background color of the whole page*/
}

答案 1 :(得分:0)

非常粗略的实施如下。我刚刚展示了一个片段,需要添加优化或其他条件

    public static void main(String[] args) throws Exception {
    Document doc = Jsoup
            .connect("http://services.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=Lynx%A0Titan")
            .get();
    Element contentHiscoresDiv = doc.getElementById("contentHiscores");
    Element table = contentHiscoresDiv.child(0);
    for (Element row : table.select("tr")) {
        Elements tds = row.select("td");
        for (Element column : tds) {
            if (column.children() != null && column.children().size() > 0) {
                Element anchorTag = column.getElementsByTag("a").first();
                if (anchorTag != null && anchorTag.text().contains("Attack")) {
                    System.out.println(anchorTag.text());
                    Elements attributeSiblings = column.siblingElements();
                    for (Element attributeSibling : attributeSiblings) {
                        System.out.println(attributeSibling.text());

                    }

                }
            }
        }
    }
}

攻击

15 99 2亿