【问题标题】:Parsing HTML with Jsoup lib使用 Jsoup 库解析 HTML
【发布时间】:2013-01-20 06:18:30
【问题描述】:

我正在尝试使用 Jsoup 库解析 html。一切都很完美,但有些东西没有显示出来。
代码:

protected ArrayList<Order> doInBackground(String... urls) {

        listItems.clear();
        myAdapterDouble.notifyDataSetChanged(); 
        String url = null;

        try {
            Document doc = Jsoup.connect(URL).timeout(0).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").get();

            Elements days = doc.select("div.day_now");
            for (Element day : days) {
                dd = day.select("div.tooltip");
                for (Element d : dd) {

                    title = d.select("td.tooltip_title h4").text();
                    time = d.select("td.tooltip_info h4").text();
                    img = d.select("td.tooltip_desc img[src]");

                    Order o = new Order();
                    o.setLink(URL + img.attr("src"));
                    o.setTextName(title);
                    o.setTextTime(time
                            .replace("on", getResources().getString(R.string.on))
                            .replace("at", getResources().getString(R.string.at))
                            .replace("Ep:", getResources().getString(R.string.episode))
                            .replace("Final", getResources().getString(R.string.final_ep)));
                    o.setDetailsUrl(URL + url);   //set urls text in list
                    listItems.add(o);
                }

                Elements links = day.select("h3");
                for (Element link : links) {
                    url = link.select("a").attr("href");  // parse page urls
                    System.out.println(url);    //display urls in LogCat                    
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return listItems;
    }

在 LogCat 中,我看到了我在上面的代码中解析的 url

01-20 12:13:17.671: I/System.out(23390): /show/678/AKB0048_next_stage
01-20 12:13:17.671: I/System.out(23390): /show/668/Battle_Spirits%3A_Sword_Eyes
01-20 12:13:17.671: I/System.out(23390): /show/694/Beast_Saga
01-20 12:13:17.671: I/System.out(23390): /show/660/Cross_Fight_B-Daman_eS

但是这些链接没有显示在屏幕上,而是我得到了空值。
我做错了什么?
谢谢。

【问题讨论】:

    标签: android jsoup


    【解决方案1】:

    目前您没有将 url 添加到 listItems 。更改您的代码以获取网址:

               ArrayList<Order> newarraylist=new ArrayList<Order>; 
               Elements links = day.select("h3");
               int urlcount=0;
               for (Element link : links) {
                    url = link.select("a").attr("href");  // parse page urls
                    System.out.println(url);    //display urls in LogCat 
                  if(urlcount < listItems.size()){
                    Order o = (Order)listItems.get(urlcount);
                    o.setDetailsUrl(URL + url);   //set urls text in list
                    newarraylist.add(o);
                  }
                  urlcount++;
                }
    

    现在从 doInBackground 返回 newarraylist 而不是 listItems

    【讨论】:

    • 不工作,不显示网址。工作 rhis Elements links = day.select("h3"); for (Element link : links) { url = link.select("a").attr("href"); System.out.println(url); int i = 0; if (i &lt; listItems.size()) { Order o = (Order)listItems.get(i); o.setDetailsUrl(URL + url); newarraylist.add(o); } } 但它是错误的代码,只显示最后一个 url 到列表的第一项
    • @Azat-777:试试吧,这会起作用,你说的“它不起作用”是什么意思?我上次评论你说它正在起作用,现在你说它不起作用。我已经根据您的问题说明了为什么您没有在 ArrayList 中获取 url,而我的代码只是建议而不是完美的复制粘贴。谢谢
    • 感谢您的帮助。 url = link.select("a").attr("href"); // i get urls,但在这个地方o.setDetailsUrl(URL + url); //no urls。 P.S.:问题解决了。你或我混淆了字符">"
    • @Azat-777 :您可以尝试另一种方法,首先在单独的 arraylist 中提取 url,然后将其添加到 listItems arraylist 。
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2019-10-10
    相关资源
    最近更新 更多