我知道,有很多问题,但没有回答帮助我 试图从一个着名的乌克兰门户网站解析足球新闻,并将其列入我的列表视图。
我解析了“news-feed”类:
class ParseTitle extends AsyncTask<Void, Void, HashMap<String, String>>{
@Override
protected HashMap<String, String> doInBackground(Void... params) {
HashMap<String, String> hashMap = new HashMap<>();
try {
Document document = Jsoup.connect("http://football.ua/england.html").get();
Elements elements = document.select(".news-feed");
for (Element element : elements){
Element element1 = element.select("a[href]").first();
hashMap.put(element.text(), element1.attr("abs:ahref"));
}
} catch (IOException e) {
e.printStackTrace();
}
return hashMap;
}
}
答案 0 :(得分:4)
使用
Elements elements = document.select("article.news-feed");
而不是
Elements elements = document.select(".news-feed");
编辑:将我的代码与你的代码进行比较,我看到了很好的差异,首先,我认为更重要的是,你在HashMap中累积读取值,我在StringBuffer中。然后我连接并走这条路:
try {
doc = Jsoup.connect("http://football.ua/england.html").userAgent("yourPersonalizedUA").timeout(0).ignoreHttpErrors(true).get();
topicList = doc.select("article.news-feed");
for (Element topic : topicList) {
myString += topic.html();
}} catch (IOException e) { System.out.println("io - "+e); }
buffer.append(myString);
然后,如果一切正常
return buffer.toString();
假设您已经在开始时说过:
private Document doc;
private String myString;
private StringBuffer buffer;
private Elements topicList;
如果这有所帮助,那就不是真的,也许可以带来新的视角。您是否成功使用代码解析了另一个页面?