【发布时间】:2015-11-03 03:12:52
【问题描述】:
我正在尝试构建一个 RSS 提要阅读器应用程序。我正在获取 rss 链接并使用 jsoup 对其进行解析。我正在获取有线、mashable、whackyideas、techcrunch、企业家和其他类似网站等网站的 rss 提要。但是,当我尝试 nytimes、bbc、cnn 或其他新闻网站等网站时,我无法获取 rss 链接。我认为问题出在下面提到的代码上。有人可以帮我解决这个问题吗?
public String getRSSLinkFromURL(String url) {
// RSS url
String rss_url = null;
try {
// Using JSoup library to parse the html source code
org.jsoup.nodes.Document doc = Jsoup.connect(url).get();
// finding rss links which are having link[type=application/rss+xml]
org.jsoup.select.Elements links = doc
.select("link[type=application/rss+xml]");
Log.d("No of RSS links found", " " + links.size());
// check if urls found or not
if (links.size() > 0) {
rss_url = links.get(0).attr("href").toString();
} else {
// finding rss links which are having link[type=application/rss+xml]
org.jsoup.select.Elements links1 = doc
.select("link[type=application/rss+xml]");
if(links1.size() > 0){
rss_url = links1.get(0).attr("href").toString();
}
}
} catch (IOException e) {
e.printStackTrace();
}
我也尝试使用“atom + xml”代替“rss+xml”,但得到了相同的结果。
编辑:我已按以下方式修改了代码,并且打开了更多网站,这些网站之前没有打开。但我仍然没有得到像“www.BBC.com”和“www.timesofindia.indiatimes.com”这样的网站。如果有人可以帮助我,我将不胜感激
org.jsoup.nodes.Document doc = Jsoup.connect(url).get();
doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")
.timeout(12000)
.referrer("http://www.google.com")
.get();
【问题讨论】:
-
请至少提供一个您尝试过但无法按预期工作的提要地址。另外,是否有错误,或者发生了什么。任何堆栈跟踪?
-
@luksch bbc.com、nytimes.com 等链接无法正常工作。没有错误,它只是显示“未找到链接”,即无法获取 RSS 提要链接
-
对我来说,bbc.com 的首页源代码不包含任何 rss 链接。 Times of India 重定向到广告,您也应该像 stackoverflow.com/questions/24907808/jsoup-get-redirected-url 那样处理重定向
-
@janih 我也跟着,但它仍然没有得到 rss 链接。 gizmodo.com 和 timesofindia、cnn 等网站没有被捕获。
-
您是否设置了
followRedirects(true)?我认为,如果您可以使重定向工作并且页面确实包含 rss 链接,那么您的代码应该可以工作。更改用户代理也很重要,但您已经这样做了。
标签: android-studio rss jsoup