我正在尝试在Android中使用Jsoup 1.8.1解析此URL中的HTML - http://sirim.co.il/。
由于某些原因,我无法让它工作..在其他网站上工作的方法在这里不起作用。
我的代码中有什么问题吗?或者与网站?
只是试图从网站上获取所有表格并添加到TextView他们的ID ... TextView为空。
Document doc = Jsoup.connect("http://sirim.co.il/").get();
Elements metaElems = doc.select("table");
for (Element metaElem : metaElems) {
// for every "table" tag, get the id attribute
String id = metaElem.attr("id");
buffer.append(id + "\r\n");
}
httpInfo.setText(s); // set text of TextView
任何想法都有帮助吗? 感谢
编辑:代码很简单。 由于某种原因,它适用于java,但在android
中不起作用metaElems是空的,我猜它甚至没有得到元素.. 想法?
getRecipes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// new ParseURL().execute(new String[] { URL });
StringBuffer buffer = new StringBuffer();
Document doc;
try {
doc = Jsoup.connect("http://sirim.co.il/").get();
Elements metaElems = doc.select("table");
for (Element metaElem : metaElems) {
// for every "table" tag, get the id attribute
String id = metaElem.attr("id");
buffer.append(id);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
httpInfo.setText(buffer.toString());
}
});
答案 0 :(得分:1)
该代码适用于我(普通java) - 打印所有表的id(当未设置id时,打印一个空行):
package jsoup;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Tester {
public static void main(String[] args) {
Document doc;
try {
doc = Jsoup.connect("http://sirim.co.il/").get();
Elements metaElems = doc.select("table");
for (Element metaElem : metaElems) {
// for every "table" tag, get the id attribute
String id = metaElem.attr("id");
System.out.println(id);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
编辑:您可能是因为您正在UI线程中发送网络请求。将请求卸载到AsyncTask doInBackground ..
答案 1 :(得分:0)
搞定了! 这是因为移动设备上的用户代理与桌面应用程序中的用户代理不同。
我刚刚在此链接中更改了它 - http://xjaphx.wordpress.com/2013/01/29/a-note-when-using-jsoup-user-agent/