【问题标题】:Jsoup interesting parse, nothing printedJsoup 有趣的解析,没有打印
【发布时间】: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 I'm trying to parse

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需要父母。
  • 我用过父母什么都没用

标签: android jsoup


【解决方案1】:

这个代码(几乎和你的一样)对我有用

public class Gazete {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Document doc = Jsoup.connect("http://www.radikal.com.tr/yazarlar/tum_yazarlar/").get();

        Elements 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");


            System.out.println(yazar);
            System.out.println(baslik);
            System.out.println(yaziAdress);
            System.out.println("-------------------------");
    }

}
    }

【讨论】:

  • 我用过 Log.d("burda",mainElement.text());并得到了这样的消息 05-21 07:30:35.520 1231-1368/yazlm.beyaz.keyazarlar D/burda:[05-21 07:30:35.700 1231:1231 I/Choreographer]
  • 我认为我的 Android Studio 出了问题
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2022-01-05
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多