2011-10-23 216 views
0

这里一个HTML页面的代码到目前为止我想,但它显示了我的错误:的Android:需要帮助,试图解析使用JSoup解析器

URL url = null; 
try { 
    url = new URL("http://wap.nastabuss.se/its4wap/QueryForm.aspx?hpl=Teleborg+C+(V%C3%A4xj%C3%B6)"); 
} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
System.out.println("1"); 
Document doc = null; 
try { 
    System.out.println("2"); 
    doc = Jsoup.parse(url, 3000); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
System.out.println("3"); 
Element table = doc.select("table[title=Avgångar:]").first(); 
System.out.println("4"); 
Iterator<Element> it = table.select("td").iterator(); 

//we know the third td element is where we wanna start so we call .next twice 
it.next(); 
it.next(); 
while(it.hasNext()){ 
    // do what ever you want with the td element here 
System.out.println(it.next()); 
    //iterate three times to get to the next td you want. checking after the first 
    // one to make sure 
    // we're not at the end of the table. 
    it.next(); 
    if(!it.hasNext()){ 
    break; 
    } 
    it.next(); 
    it.next(); 
} 

它打印System.out.println("3");

然后停止在此行

Element table = doc.select("table[title=Avgångar:]").first();

我怎样才能解决这个问题,

谢谢

+0

最坏的事情是什么我甚至不能打印任何东西,我真的很感激,如果有人可以帮我打印一些东西,那么我会尽我所能来指定我的查询。 –

+0

你遇到什么错误? –

+0

好吧,正如我告诉它直到这一行System.out.println(“3”);然后它stucks和logcat它说java.lang.nullpointerexception 我的问题是这个JSoup适用于android以及? –

回答

1

它看起来像你试图解析HTML的网站有一个错误,并没有任何表。这是导致空指针异常的原因。 doc.select("table[title=Avgångar:]")没有返回一个元素,然后你试图调用它的一个方法。为了防止这种错误再次发生,你可以做这样的事情:

Elements foundTables = doc.select("table[title=Avgångar:]"); 
Element table = null; 
if(!foundTables.isEmpty()){ 
    table = tables.first(); 
} 

现在,如果任何表被发现后,table变量将不能为空。如果没有找到表格,只需修改代码即可。

+0

是的,你是对的Kurtis,现在没有buss来到大学:P,它太晚了,因为网站正在产生每当有下一个笛卡尔时自动表格。 我会稍后尝试它,或与任何其他网站 btw感谢你的支持,你真的很有帮助。 –

+0

我试过这个网站http://www.nseindia.com/content/equities/niftysparks.htm,我改为Element table = doc.select(“table [class = niftyd]”)。first(); 迭代器 it = table.select(“td [width = 65]”)。iterator(); 仍然是同样的问题:S –

+0

至少我不应该在这里有任何问题:P,它是为你工作的这个例子?我在想我的错误在哪里? –

0

在致电.first()之前,您没有检查doc.select()的结果。如果文档中没有与指定查询匹配的元素,doc.select()可能会返回null。然后你在空指针上调用.first(),这当然会抛出一个异常。没有table标记与您在示例中使用的文档中指定的标题。所以,结果并不令人意外。

+0

我试图在调用之前获取doc.select()。首先,但我仍然有一些错误。你能告诉我到底是什么问题。或者如果你写了我一些代码,它可能会帮助我很多。 –