【问题标题】:JSoup:How to parse a specific linkJSoup:如何解析特定链接
【发布时间】:2016-03-12 21:09:56
【问题描述】:

我正在构建一个 android 应用程序,我试图只从以下站点获取特定链接,但我不能,因为该站点对所有类使用相同的名称(这只是站点 HTML 的一小部分代码)。

<td class="td-file"><span class="td-value"  
id="JOT_FILECAB_label_wuid:gx:4c83ae813389c090" aria-hidden="true">
Ε.ΛΣΧ.ΑΕΝ.02 ΑΠΟ 22-2-2016.pdf</span><br />
<SPAN style="word-spacing: 3px;">
<a href="https://docs.google.com/viewer?a=v&amp;pid=sites&amp;srcid=ZGVmYXVsdGRvbWFpbnxhZW5tYWttZWNofGd4OjRjODNhZTgxMzM4OWMwOTA" dir="ltr" target="_blank">Προβολή</a> 
<a href="/site/aenmakmech/tmemata/%CE%95.%CE%9B%CE%A3%CE%A7.%CE%91%CE%95%CE%9D.02%20%CE%91%CE%A0%CE%9F%2022-2-2016.pdf?attredirects=0&amp;d=1" dir="ltr">Λήψη</a>
</SPAN></td>

如何使用 id="JOT_FILECAB_label_wuid:gx:4c83ae813389c090" 解析?

【问题讨论】:

  • 你需要为此使用数据抓取
  • @NiravRanpara 你知道有什么教程可以推荐给我吗?
  • 感谢您的教程!

标签: java android html jsoup


【解决方案1】:

我找到了一个简单的解决方案,它解决了我的问题。我从站点中选择所有“href”,将元素存储在一个数组中,然后从数组中选择我想要的那个。

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Main {

 public static void main(String[] args) {
  Document doc = null;

  try {
   doc = Jsoup.connect("https://sites.google.com/site/aenmakmech/tmemata").get();
   Elements links = doc.select("a[href]");

   String[] urls = new String[links.size()];
   for (int i = 0; i < links.size(); i++) {
    urls[i] = links.get(i).attr("href");
    //System.out.println(prices[i]);
   }

   String specific_url = urls[77];
   System.out.print(specific_url);

  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }


 }
};

感谢您的帮助。

【讨论】:

    【解决方案2】:

    你可以尝试如下方式

     Document doc;
    Element table;
    Elements rows;
    
    
    
     table = doc.select("table").get(0); // select the first table.
    rows = table.select("tr");
    
    for (int i = 0; i < rows.size(); i++) {
        Element row = rows.get(i);
        Elements cols = row.select("td");
        // Elements links = table.getElementsByTag("a");
        // Elements heading = cols.select("h3");
    
        if (cols.size() > 0)
            if (cols.get(0).text().contains("Football")) {
    
                String name = cols.get(0).text();
                String type = cols.get(1).text();
    
                String myLink = cols.get(2).html();
    
                String parseLink = myLink.substring(myLink.indexOf("\"") + 1, myLink.lastIndexOf("\""));
                String newLink = parseLink.replaceAll("&amp;", "&");
    
            }
    }
    

    【讨论】:

    • 如果网站中的表格格式发生变化然后应用程序给出错误,这不是更好的主意。它总是建议从 php 端进行抓取并将 JSON 发送到 android
    • 是的,如果链接发生变化,你是对的,你会遇到问题,但这只是如果想要强制解析的方式,否则它不正确的方式!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2012-12-27
    相关资源
    最近更新 更多