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);
}
}
答案 0 :(得分:0)
首先尝试抓取所有表格元素,然后选择具有该类别的元素:
Elements tables = doc.select("table");
Element table = null;
for(Element tableElement : tables){
if(tableElement.hasClass("W(100%)")){
table = tableElement;
}
}
Html解析器无法处理和解析带有()的元素,因此会抛出错误。这是一个简单的解决方法,可以避免这个问题。