我正在尝试使用jsoup
Parser for Android解析HTML。
如果我运行我的代码,我就无法进入for循环;程序执行在for循环之前停止(输出No error)。
我放了Log?当我在普通的java项目中运行时,相同的代码我能得到结果吗?
private class DownloadTwitterTask extends
AsyncTask<String, Void, List<String>> {
String content;
protected List<String> doInBackground(String... urls) {
try {
doc = Jsoup.connect("https://twitter.com/someperson/").get();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.d("Exception", "Exception");
e.printStackTrace();
}
Elements elements = doc.getElementsByAttributeValue("class",
"js-tweet-text tweet-text");
for (int j=0;j<elements.size();j++) {
Element tmp = elements.get(j);
String value = tmp.text();
twitterList.add(value);
}
return twitterList;
}
protected void onPostExecute(List<String> result) {
tadaptor = new TwitterLazyAdaptor(INFOActivity.this, result);
// this.setListAdapter(fadaptor);
lv1.setAdapter(tadaptor);
}
}
答案 0 :(得分:1)
你可以尝试这个:
doc.select(".js-tweet-text.tweet-text")
。在课堂开始时,和。在“tweet-text”之前为空间。
<强>更新强> 我把我的解决方案比作你的。它给出了相同的结果。
您也可以尝试设置用户代理。有时网站会返回显着不同的HTML。
Document doc = Jsoup.connect("https://twitter.com/someperson/")
.userAgent("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0")
.get();
答案 1 :(得分:0)
您还应该检查“doc”是否为空。如果它是空的,可能是连接有问题。你也可以做这样的选择
Elements elements = doc.select("p.js-tweet-text tweet-text");
其中“p”是您查找的标记,然后是类属性。还有你设置
<uses-permission android:name="android.permission.INTERNET" />
以及您在哪里执行DownloadTwitterTask