2015-05-09 62 views
1

是否有方法从HTML文本代码中识别RSS链接。我需要用JAVA编码来从HTML源代码中提取这个链接,但我无法找到不同网站将RSS链接嵌入到网页HTML代码中的方式。有些网站使用“type = application/rss + xml”,但并非全部用于例如discovery.com和cnn.com。有什么方法可以为任何网站编码?识别HTML源代码中的RSS链接

回答

0

我已经解决了我暂时的问题,但如果有人能告诉我更简洁高效的代码,我将不胜感激。我认为我的代码不是那么高效,它只是解决小问题的一个大循环。我的第一部分代码是从user911236的帖子上取得的。

我的代码:

公共静态字符串RSSLinkRetriever(字符串URL) {

String rssUrl = "";  
    try{ 
      Document doc = Jsoup.connect(url).get(); 

      Elements links = doc.select("link[type=application/rss+xml]"); 
      if (links.size() > 0) { 
       rssUrl = links.get(0).attr("abs:href").toString(); 
      } 
      else if(rssURLNews(url) != ""){ 

      rssUrl = rssURLNews(url); 
      } 
      else if(rssURLrss(url) != "") 
       rssUrl = rssURLrss(url); 
      else{ 
       rssUrl = "No URL found"; 
      } 
     } 
     catch (IOException ex) { 
      Logger.getLogger(RSSReader.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     return rssUrl; 

} 

公共静态字符串rssURLNews(字符串URL){

Document doc; 
    String str = ""; 
    try { 
     doc = Jsoup.connect(url).get(); 

     // get all links 
     Elements links = doc.select("a[href]"); 
     for (Element link : links) { 
      if(link.text().equals("News")){ 
       str = RSSLinkRetriever(link.attr("href")); 
      } 
     } 

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

公共静态字符串rssURLrss(字符串url) {

Document doc; 
    String str = ""; 
    try { 
     doc = Jsoup.connect(url).get(); 

     // get all links 
     Elements links = doc.select("a[href]"); 
     for (Element link : links) { 
      if(link.text().equals("RSS")){ 
       str = link.attr("href"); 
      } 
     } 

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