Java Jsoup刮网站数据麻烦

时间:2016-11-25 18:15:18

标签: java jsoup

Java和Jsoup全新。我正在尝试创建一个简单的程序来抓取网络,并在Java中为我提供股票市场的数据。我想从dow jones股票开始,并打印52周的范围数据。它转到http://finance.yahoo.com/quote/AAPL?ltr=1并查看左下方的表(以前一个关闭开始)并向下到第五个索引并从那里获取文本值。我收到错误:

线程中的异常" main" org.jsoup.select.Selector $ SelectorParseException:无法在'(100%)'

解析查询' table.W(100%)':意外令牌

这意味着在某处我得到了表类错误?如何使此代码生效?

我从苹果(AAPL)股票开始,并在Jsoup中提出了这个:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Scraper {

public static void main(String[] args) throws Exception {

    final Document doc = Jsoup.connect("http://finance.yahoo.com/quote/AAPL?ltr=1").get();

    Elements table = doc.select("table.W(100%)");
    Element row = table.select("tr").get(5);

    final String number = row.select("td").text();
    System.out.println(number);

    }
}

1 个答案:

答案 0 :(得分:0)

首先尝试抓取所有表格元素,然后选择具有该类别的元素:

Elements tables = doc.select("table");
Element table = null;

for(Element tableElement : tables){
    if(tableElement.hasClass("W(100%)")){
        table = tableElement;
    }
}

Html解析器无法处理和解析带有()的元素,因此会抛出错误。这是一个简单的解决方法,可以避免这个问题。