Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,327
1

Не получается распарсить rss на одном сайте. Библиотека jsoup

15.05.2017, 19:08. Просмотров 312. Ответов 4
Метки нет (Все метки)

Вот сам сайт http://www.economist.com/sections/economics и его rss по ссылке view-source:http://www.economist.com/sections/economics выглядит так http://www.economist.com/sections/economics/rss.xml.
Вот код парсинга
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public String getRSSLinkFromURL(String url) {
        // RSS url
        String rss_url = null;
 
        try {
 
            org.jsoup.nodes.Document doc = Jsoup.connect(url).get();
 
            org.jsoup.select.Elements links = doc
                    .select("link[type=application/rss+xml]");
 
            Log.d("No of RSS links found", " " + links.size());
 
 
            if (links.size() > 0) {
                rss_url = links.get(0).attr("href").toString();
            } else {
 
                org.jsoup.select.Elements links1 = doc
                        .select("link[type=application/atom+xml]");
                if (links1.size() > 0) {
                    rss_url = links1.get(0).attr("href").toString();
                }
            }
 
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return rss_url;
    }
и в catch мне падает Exception Exception: org.jsoup.UnsupportedMimeTypeException: Unhandled content Type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/rss+xml; charset=UTF-8
Как это исправить?? ignoreContentType(true) не помогает.

Добавлено через 1 минуту
То есть при помощи jsoup я не могу распарсить саму rss ссылку из исходного кода этого сайта. Как правильно это распарсить?? На вход моя функция принимае этот url http://www.economist.com/sections/economics
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2017, 19:08
Ответы с готовыми решениями:

Jsoup, как вытащить картинку из rss ленты в теге <description>
пишу клиент для сайта использую xml sax parser вопрос как вытащить картинки и...

Проверка наличия элемента (библиотека jsoup)
Всем привет! Подскажите, как можно сделать проверку на наличие элемента? То...

При логине на одном сайте автоматически выполнять логин на другом сайте
Здравствуйте! Есть два сайта, оба на MVC5. Реально ли сделать так чтобы...

Можно ли я купить домен на одном сайте, а хоститься с этим доменом уже на другом сайте?
Могу ли я купить домен на одном сайте, а хоститься с этим доменом уже на другом...

Распарсить несколько строк в одном теге
Имеем: &lt;tr class=&quot;GridRow_Business&quot;&gt; &lt;td&gt; ...

4
Pablito
2763 / 2195 / 742
Регистрация: 12.05.2014
Сообщений: 7,702
Завершенные тесты: 1
15.05.2017, 19:55 2
ты снова делаешь куда-то тестовое и пришел что бы за тебя все порешали?
как прошлая работа, раскусили и погнали в шею?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,327
15.05.2017, 20:52  [ТС] 3
нет работаю еще

Добавлено через 44 секунды
Просто проблема возникла. На счет jsoup вот и решил спросить.

Добавлено через 38 секунд
Какие то ссылки парсит мой парсер а какие то нет.
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
16.05.2017, 12:07 4
yura91, сходу вопрос, почему jsoup? У тебя есть xml, а чем парсится xml? Подключился к серверу(HttpUrlConnectio, Volley, OkHttp), выкачал строку с xml, распарсил. Уверен, под rss даже можно найти готовый код.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,327
17.05.2017, 20:54  [ТС] 5
xml через retrofit раскладывается в класс(модель) SimpleXmlConverterFactory в retrofit используется.
вот как парсится
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 void updateRssItems(final ArrayList<String> urls, final int i) {
 
        if(urls != null) {
            if (urls.size() != 0) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
                HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
                interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
                OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
 
                SimpleXmlConverterFactory conv = SimpleXmlConverterFactory.createNonStrict();
                Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl("https://habrahabr.ru/")
                        .client(client)
                        .addConverterFactory(conv)
                        .build();
                RssRetrofitAdapter retrofitService = retrofit.create(RssRetrofitAdapter.class);
 
                final String urlsLink = urls.get(i);
                final String url = getRSSLinkFromURL(urls.get(i));
                Call<RssFeed> call = retrofitService.profilePicture(url);
                call.enqueue(new Callback<RssFeed>() {
                    @Override
                    public void onResponse(Call<RssFeed> call, Response<RssFeed> response) {
 
                        RssFeed feed = response.body();
                        List<RssFeedItem> mItems = feed.getChannel().getItemList();
 
 
                        if (mItems != null) {
                            List<RssFeedItem> cachedList = new ArrayList<>(mItems);
                            Log.d(TAG, "Initialized  cached list");
 
 
                            Gson gson = new Gson();
                            String inputString = gson.toJson(cachedList);
                            /*WebSite site = new WebSite(feed.getChannel().getTitle(), feed.getChannel().getLink(), url,
                                    feed.getChannel().getDescription(), inputString);*/
                            WebSite site = new WebSite(feed.getChannel().getTitle(), urlsLink, url,
                                    feed.getChannel().getDescription(), inputString);
                            rssDb.addSite(site);
 
                            int k = i + 1;
 
                            if (k < urls.size()) {
                                updateRssItems(urls, k);
                            } else {
                                sendCachedList();
                            }
                        }
                    }
 
 
                    @Override
                    public void onFailure(Call<RssFeed> call, Throwable t) {
                        Log.d(TAG, "OnFailure Error is " + t);
                    }
                });
            }
        }
        }
Добавлено через 1 минуту
впринципи я так и сделал взял готовый код и дополнил его немного.
0
17.05.2017, 20:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2017, 20:54

RSS лента на сайте с другого сайта
Вообщем, покопался в интернете, нашел код который мне нужен, но дело в том, что...

Вывод новостей на сайте через rss
Всем привет! Сайт сделан на joomla 1.5 Необходимо на сайте размещать...

Не получается использовать Jsoup с вэб-серверным приложением (Java.lang.NoClassDefFoundError)
Изучаю Servlet и JSP. Решил в качестве примера сделать простую страницу с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru