2

嗨,我想使用 JSoup 库从网站上抓取一些文本。我尝试了以下代码,这给了我整个网页,我只想提取一个特定的行。这是我正在使用的代码:

Document doc = null;
try {
doc = Jsoup.connect("http://www.example.com").get();
} catch (IOException e) {
e.printStackTrace();
}
String text = doc.html();

System.out.println(text);

打印出以下内容

<html>
 <head></head>
 <body>
  Martin,James,28,London,20k
  <br /> Sarah,Jackson,43,Glasgow,32k
  <br /> Alex,Cook,22,Liverpool,18k
  <br /> Jessica,Adams,34,London,27k
  <br /> 
 </body>
</html>

如何仅提取读取的第 6 行Alex,Cook,22,Liverpool,18k并将其放入数组中,其中每个元素都是逗号前的一个单词(例如:[0] = Alex,[1] = Cook 等)

4

1 回答 1

1

也许您必须稍微格式化(?)结果:

    Document doc = Jsoup.connect("http://www.example.com").get();
    int count = 0; // Count Nodes

    for( Node n : doc.body().childNodes() )
    {
        if( n instanceof TextNode )
        {
            if( count == 2 ) // Node 'Alex'
            {
                String t[] = n.toString().split(","); // you have an array with each word as string now

                System.out.println(Arrays.toString(t)); // eg. output
            }
            count++;
        }
    }

输出:

[ Alex, Cook, 22, Liverpool, 18k ]

编辑:

由于您无法TextNode通过其内容选择 's(仅可能与Elements 一起使用),因此您需要一个小解决方法:

for( Node n : doc.body().childNodes() )
{
    if( n instanceof TextNode )
    {
        str = n.toString().trim();

        if( str.toLowerCase().startsWith("alex") ) // Node 'Alex'
        {
            String t[] = n.toString().split(","); // you have an array with each word as string now

            System.out.println(Arrays.toString(t)); // eg. output
        }
    }
}
于 2013-01-21T21:59:33.503 回答