【发布时间】:2015-05-21 10:30:26
【问题描述】:
我正在解析新闻文章。 我确实成功地解析了两篇新闻。 但在第三个我有一个有趣的问题。 这是代码。
case 2://Radikal
doc = Jsoup.connect(gazete.getAdress()).get();
mainElement = doc.select("div.author");
System.out.println(mainElement);
for (Element element : mainElement) {
String yazar = element.select("span.name").text();
yazar +=" " +element.select("span.surname").text();
String baslik = element.select("a h4").text();
String yaziAdress = element.select("div.article a").attr("abs:href");
KoseYazarlariClass ky = new KoseYazarlariClass();
ky.setYazarName(yazar);
ky.setBaslik(baslik);
ky.setYaziAdress(yaziAdress);
koseYazarlariList.add(ky);
System.out.println(yazar);
System.out.println(baslik);
System.out.println(yaziAdress);
System.out.println("-------------------------");
}
break;
}
here is image of parse html tag
此外,断点上的android调试不起作用,所以我看不到 mainElement 它有什么。我之前为元素打印了一些东西,我确实在 logcat 上看到了。我确实在 for 元素上打印了一些我看不到的东西。这意味着程序不输入 for 元素。另外,我之前确实尝试为元素打印主元素,但在 logcat 上看不到。另外我将选择元素更改为 getElementByClass 方法并且不起作用。这段代码有问题
mainElement = doc.select("div.author");
mainElement 不为空,因为我确实打印了它并且没有错误。如果我们查看尝试解析 html 链接的地址,则有类作者的 div。
怎么了?没有任何东西印有 yazar、baslik 和 yaziAdress 从未进入 for 循环
更新编辑:
我用Log.d("burda",mainElement.text());代替System.out.println
收到这样的消息:
05-21 07:38:37.428 4792-4937/yazlm.beyaz.keyazarlar D/burda﹕ [ 05-21 07:38:37.648 4792: 4792 I/Choreographer ]
也确实收到了很多消息
05-21 07:38:34.088 4792-4792/yazlm.beyaz.keyazarlar I/Choreographer﹕ Skipped 35 frames! The application may be doing too much work on its main thread.
更新 2
我想我找到了问题。当 jsoup 尝试连接到 url 地址时,它被重定向到 m."url 地址"。我在想,因为我用这个代码打印了重定向地址
Connection t = Jsoup.connect(gazete.getAdress()).followRedirects(false);
doc=t.get();
Connection.Response response = t.execute();
System.out.println(response.url());
使用此代码它会打印 m 地址。但是当我尝试此代码时
Connection t = Jsoup.connect(gazete.getAdress()).followRedirects(false);
它没有给出重定向地址,但我认为它被重定向了,因为仍然没有工作。任何帮助表示赞赏
【问题讨论】:
-
你试过this.doc.select("div.authors-area");看来div.author需要父母。
-
我用过父母什么都没用