【问题标题】:Unable to get RSS feed link using jsoup无法使用 jsoup 获取 RSS 提要链接
【发布时间】: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


【解决方案1】:

我认为您缺少“application/rss+xml”周围的引号:"link[type="application/rss+xml"]"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多