如何使用Java訂閱RSS Feed?
RSS 提要是從流行網站獲取最新新聞文章的常用方法之一。
在本部落格中,我們將使用 java 庫rome庫透過 rss 提要從技術部落格網站獲取文章。
我們的用例是從流行的部落格頁面(如https://www.jdon.com/rss等)獲取 RSS 提要。
客戶端
現在我們有了 rss feed url,我們可以利用它的優勢透過拉取文章來閱讀它。
我們將首先在 IDE 中建立專案 RSSReaderClient。然後第一個任務是將Roma庫新增到 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>RSSReaderClient</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>rome</groupId> <artifactId>rome</artifactId> <version>1.0</version> </dependency> </dependencies> </project> |
POJO 儲存新聞文章
- 讓我們建立 NewsArticle POJO 來儲存文章資料。我們稍後會需要它。
import java.util.List; public class NewsArticle { private String title; private String link; private String imgUrl; private List<String> categories; public String getPublishedDate() { return publishedDate; } public void setPublishedDate(String publishedDate) { this.publishedDate = publishedDate; } private String publishedDate; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getLink() { return link; } public void setLink(String link) { this.link = link; } public String getImgUrl() { return imgUrl; } public void setImgUrl(String imgUrl) { this.imgUrl = imgUrl; } public List<String> getCategories() { return categories; } public void setCategories(List<String> categories) { this.categories = categories; } @Override public String toString() { return "NewsArticle{" + "title='" + title + '\'' + ", link='" + link + '\'' + ", imgUrl='" + imgUrl + '\'' + ", categories=" + categories + ", publishedDate='" + publishedDate + '\'' + '}'; } } |
RSS 閱讀器的實用程式類
- 此外,我們將建立實用程式類來執行讀取 rss 提要操作,然後將結果對映到我們之前建立的 NewsArticle POJO。
import com.rometools.rome.feed.synd.SyndEntry; import com.rometools.rome.feed.synd.SyndFeed; import com.rometools.rome.io.FeedException; import com.rometools.rome.io.SyndFeedInput; import com.rometools.rome.io.XmlReader; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class RSSReaderUtil { public static List<NewsArticle> read(String feedUrl) throws IOException, FeedException { URL feedSource = new URL(feedUrl); SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedSource)); Iterator itr = feed.getEntries().iterator(); List<NewsArticle> results = new ArrayList<>(); while (itr.hasNext()) { SyndEntry syndEntry = (SyndEntry) itr.next(); results.add(mapToArticle(syndEntry)); } return results; } /** * Map to Article * @param syndEntry */ private static NewsArticle mapToArticle(SyndEntry syndEntry) { NewsArticle newsArticle = new NewsArticle(); newsArticle.setTitle(syndEntry.getTitle()); newsArticle.setPublishedDate(syndEntry.getPublishedDate().toString()); newsArticle.setImgUrl(""); newsArticle.setLink(syndEntry.getLink()); return newsArticle; } } |
讀客戶端
- 一旦我們準備好實用程式,那麼我們所要做的就是在我們的客戶端中使用它。
- 我們有我們將定位並從中提取文章的提要列表
- 我們將傳遞給它我們的 RssReaderUtility.read() 方法,它將返回 List<NewsArticle> 的響應
- 一旦我們得到響應,我們所要做的就是列印它。
import com.rometools.rome.io.FeedException; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.List; public class RSSReader { public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException, FeedException { URL feedSource = new URL("https://www.jdon.com/rss"); List<String> targetFeedsList = List.of("https://www.jdon.com/rss", "https://eng.uber.com/feed/", "https://eng.lyft.com/feed", "https://netflixtechblog.com/feed"); for(String url : targetFeedsList){ List<NewsArticle> results = RSSReaderUtil.read(url); System.out.println("url : "+url); results.stream().forEach(a-> System.out.println(a.toString())); System.out.println("=========="); } } } |
測試客戶端
- 讓我們執行我們的 java 應用程式,按照我們的邏輯,我們的閱讀器將讀取提要列表並列印它。
- 正如您在輸出的螢幕截圖中所見,我們擁有來自谷歌雲部落格的所有最新 rss 提要。
相關文章
- php生成rss訂閱PHP
- 為 Docsify 自動生成 RSS 訂閱
- Feedbro - 帶有內建規則引擎的RSS/Feed閱讀器
- 使用YQL(Google Feed API替代方案)顯示RSS源(2)GoAPI
- RSS 一種簡潔優雅的資料訂閱方式
- 使用Java接入小程式訂閱訊息!Java
- Java MQTT訂閱端,可訂閱萬用字元(/#)JavaMQQT字元
- 使用此開源工具在一起收取你的 RSS 訂閱源和播客開源工具
- python 爬取喜馬拉雅節目生成RSS FeedPython
- 【2019-01-16】每日生信--用RSS訂閱NCBI-PubMed文獻
- Leaf for Mac RSS閱讀器Mac
- Feedly – 超好用的 RSS 免費訂閱服務完整攻略,讓你隨時接收訂閱網站的最新訊息 - TechMoon 科技月球網站
- 12 號開始,無法通過 https://gocn.vip/feed 訂閱 Go 每日新聞了HTTPGo
- QuiteRSS: Linux桌面的RSS閱讀器UILinux
- ReadKit for Mac(全功能RSS閱讀器)Mac
- Newsflow for mac RSS新聞閱讀器Mac
- Reeder for Mac(rss新聞閱讀器)Mac
- [React Native]一款RSS閱讀器React Native
- 原生體驗!老牌 RSS 閱讀器:NetNewsWire
- openGauss 訂閱
- 嗶哩嗶哩如何訂閱頻道?嗶哩嗶哩訂閱頻道的方法
- RSS概念和使用
- SQLServer 2012複製訂閱資料訂閱過程SQLServer
- 排名前10的免費 RSS 閱讀器
- RSS Menu for Mac(選單欄rss閱讀管理器) v3.1啟用版Mac
- 小心訂閱模式模式
- 使用 PubSubHubbub 製作 RSS 定時器 —— Laravel RSS (三)定時器Laravel
- spring boot 使用redis進行釋出訂閱Spring BootRedis
- Redisson-關於使用訂閱數問題Redis
- 使用Spring Data Redis 釋出訂閱訊息SpringRedis
- RxJava是如何實現訂閱關係的?RxJava
- 如何用 Redis 做實時訂閱推送的?Redis
- 訂閱模式將如何重塑遊戲產業?模式遊戲產業
- 使用者訂閱付費如何拆解分析?看這篇就夠了
- Youtube訂閱——解決在彈窗內使用Youtube訂閱按鈕高度顯示不全的問題
- 智對 Android 訂閱難點:教你如何應對工作中 10 種常見訂閱問題Android
- 訂閱制正酣?解析Google Play Pass、Apple Arcade 訂閱服務GoAPP
- 釋出訂閱EventEmitterMIT