Jsoup и кириллица в URL

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
GlueBF
Сообщения: 5
Зарегистрирован: 08 дек 2014, 14:36

Jsoup и кириллица в URL

Сообщение GlueBF » 08 дек 2014, 15:47

Здравствуйте.
Пытаюсь распарсить html при помощи Jsoup. Если адрес страницы содержит только латинские символы (например http://cat.jpg.to), то все работает нормально. Но если в адресе встречается кириллица (например http://кот.jpg.to), то парсинг не работает. Вылетает ошибка UnknownHostException.
Кто-нибудь сталкивался с такой проблемой?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Jsoup и кириллица в URL

Сообщение doter.ua » 08 дек 2014, 16:15

utf-8
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
GlueBF
Сообщения: 5
Зарегистрирован: 08 дек 2014, 14:36

Re: Jsoup и кириллица в URL

Сообщение GlueBF » 08 дек 2014, 16:23

Спасибо за очень оперативный и содержательный ответ :)

Но к сожалению конструкция адреса ссылки

Код: Выделить всё

src = "http://"+URLEncoder.encode("кот", "UTF-8")+".jpg.to/";
как и исходная конструкция

Код: Выделить всё

src = "http://"+"кот"+".jpg.to/";
не работает.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Jsoup и кириллица в URL

Сообщение doter.ua » 08 дек 2014, 17:51

Скорее всего кодировка применяется к содержимому ссылки, а не к ее адресу.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
GlueBF
Сообщения: 5
Зарегистрирован: 08 дек 2014, 14:36

Re: Jsoup и кириллица в URL

Сообщение GlueBF » 09 дек 2014, 08:08

Если я правильно понял комментарий, то нет.
Содержимое страницы http://кот.jpg.to/

Код: Выделить всё

<html>
    <head></head>
    <body><img style="margin:0;position:absolute;top:0;left:0;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Niobe050905-Siamese_Cat.jpeg/220px-Niobe050905-Siamese_Cat.jpeg">
    </body>
</html>
Т.е. адрес самой картинки не содержит кириллицы.

Ну ОК. Пока тупик.
Попробую другой парсер.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Jsoup и кириллица в URL

Сообщение doter.ua » 09 дек 2014, 16:02

GlueBF писал(а):Если я правильно понял комментарий, то нет.
Изображение

Ошибка возникает раньше чем ты скачаешь хтмл файл. UnknownHostException - неизвестный хост. При чем здесь адрес твоей картинки? чтобы добраться до адреса пикчи - нужно обработать адрес самой страницы, который и содержит кириллицу.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
GlueBF
Сообщения: 5
Зарегистрирован: 08 дек 2014, 14:36

Re: Jsoup и кириллица в URL

Сообщение GlueBF » 12 дек 2014, 08:38

Наконец-то разобрался с вопросом.
Резюме: связка Jsoup + URLEncoder отлично работает для URL содержащих кириллицу.

Как получилось.
Пробовал разные html-парсеры, ни один не хотел работать. Напомню - задачей было получить из содержания html-страницы по адресу http://###.jpg.to/ (где ### - любое слово как на латинице, так и на кириллице) ссылку на единственное изображение на этой странице (ну а затем скачать это изображение). При отсутствии кириллицы все и всегда работало, а при ее наличии не работало ничего и никогда.
К счастью у данного сервиса оказалась еще одна реализация: http://jpg.to/###. Вот тут все заработало сразу. Видимо это какие-то проблемы конкретного сайта, дальше копать не стал.

Т.о. в итоге я использовал конструкцию:

Код: Выделить всё

imgURL = "http://jpg.to/"+URLEncoder.encode(etName.getText().toString(), HTTP.UTF_8);
Document doc  = Jsoup.connect(imgURL).get();
Elements metaElement = doc.select("img");
imgSrc = metaElement.attr("src");
где в поле etName вводится слово (### в описании выше), а в imgSrc с помощью Jsoup получается ссылку на изображение.
Бинго.

AKhorevich
Сообщения: 6
Зарегистрирован: 24 май 2014, 21:01

Re: Jsoup и кириллица в URL

Сообщение AKhorevich » 12 июл 2015, 11:55

У меня немного другая проблема. Я парсю сайт с картинками и в ссылках на некоторые встречается кириллица <img src="http://dog.org/sites/default/files/images/ главной!.thumbnail.jpg">

как это решить? Подскажите пожалуйста!!!

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Jsoup и кириллица в URL

Сообщение doter.ua » 12 июл 2015, 14:39

AKhorevich писал(а):У меня немного другая проблема. Я парсю сайт с картинками и в ссылках на некоторые встречается кириллица <img src="http://dog.org/sites/default/files/images/ главной!.thumbnail.jpg">

как это решить? Подскажите пожалуйста!!!
Быдло сайт значит. Все адекватные разрабы перегоняют в транслит.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

AKhorevich
Сообщения: 6
Зарегистрирован: 24 май 2014, 21:01

Re: Jsoup и кириллица в URL

Сообщение AKhorevich » 08 сен 2015, 14:06

Разработчик сайта не я, откуда у него растут руки - это чисто его физиологические проблемы, мне просто надо данный сайт запарсить.

Ответить