Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Сталкивался уже на двух разных ресурсах при парсинге через get запрос. При получении DOM через браузер все нормально.
Пример:
Оперативники узнали, что в одном из ресторанов на северо-западе столицы готовится встреча представителей криминальных структур. Задержаны около 50 че��овек, их проверяют на причастность к преступлениям
Скиньте мне шаблон, хочу тоже научится как парсить текст с помощью get запросов, я так полагаю, что это быстрее, чем просто переходить по браузеру и парсить.
у меня маленько другая проблема.
я делаю запросы к многим сайтам. теоретически после 1го я могу определить кодировку, из meta charset, тогда нужно название кодировки вписать в настройках экшена. а там переменные не поддерживаются
конечно, как обычно можно запилить собственный экшен, но.... дальше я не знаю какие привести аргументы))
не всегда сайт возвращает в заголовке Content-Type: text/html; charset=
но но можно ориентироваться на тэг
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
можно делать зщапрос в УТФ-8, потом проверять содержимое этого тэга и\или в заголовке. и при необходимости делать второй запрос с другой кодировкой. вот такой костыль. да.
а нельзя ли просто скачать бодик а в снипете уже рабираться в какой кодировке пришло тело. Делайте запрос в утф-8 (а лучше в ascii) a потом делаете перекодировку еще раз в утф-8. Все, вопрос решен.
Естественно один запрос должен быть, думаю вы меня не так поняли. Предложенный выше "костыль" (для страниц с кодировкой отличной от UTF- требует отправки двух GET запросов:
1) узнает кодировку страницы по заголовкам/meta данным.
и если полученная кодировка не UTF-8, то:
2) делает повторный GET запрос с указанием в настройках полученной кодировки.
А как должно быть по хорошему: один GET запрос -> определяем кодировку по заголовкам/meta данным (или по какому либо алгоритму) -> конвертируем в UTF-8 для дальнейшей работы.
Делайте запрос в утф-8 (а лучше в ascii) a потом делаете перекодировку еще раз в утф-8.
Было бы здорово увидеть реализацию перекодирования на c# из известной кодировки (windows-1251, koi8-r, iso8859-5, raw) в UTF-8.
У самого накидать не получилось, с c# особо не дружу.
1) Делаем GET запрос к странице с выставленной кодировкой Windows-1251, получаем заголовки и содержимое.
2) Парсим регулярками кодировки из заголовков и из мета:
3) Приводим полученные кодировки к нижнему регистру.
4) Сравниваем сначала (приоритет заголовкам) кодировку из заголовка (если есть) с windows-1251 (и с её синонимом cp1251), если отличается - выполняем C# код представленный ниже -> PROFIT!
5) Если же кодировки из заголовка нет, то сравниваем кодировку из meta с windows-1251 (и с её синонимом cp1251), если отличается - выполняем C# код представленный ниже -> PROFIT!
content - полученное содержимое
charset - кодировка в которой содержимое
PS: Если ни в заголовке, ни в meta кодировка не прописана - то остаётся только надеяться, что данные на странице были в Windows-1251. Тут уж поможет только определение кодировки другими алгоритмами, например Mozilla Universal Charset Detector (думаю было бы круто прикрутить к зеннке, в качестве автоопределятора/перегона кодировки).
PS2: интересно то, что если запрос изначально делать в UTF-8 то потом перевести полученные данные в другую кодировку не получается (кракозябры остаются).
если контент уже раскодирован в Windows-1251, зачем повторно его перекодировать в ту же кодировку?
удачным решением будет если вы скачаете бодик без аксепт хедера (например курлом), распакуете его если нужно, переведете в утф-8 копию, найдете кодировку и ей же раскодируете оригинал.
сравнили - отличается, оказывается это не вин-1251, а допустим кои какой нибудь кои - прекодирует?
У меня есть подозрение что, если зенка пахабит данные перекодированием в теле ответа то никакое пере-перекодирование не поможет.
Самое лучший способ - качать станицу в байтах, а там уже делай что хочешь.
Способ как раз и рассчитан на работу со страницами в "неизвестной" кодировке.
В любом случае обращаемся с выставленной в настройках GET запроса кодировкой Windows-1251 (к страницам в любых кодировках), получив заголовки и содержимое - дергаем регулярками кодировку контента (из заголовков и meta).
сравнили - отличается, оказывается это не вин-1251, а допустим кои какой нибудь кои - прекодирует?