Универсальная процедура «HTTP GET HTML-содержимое страницы и перекодировать в UTF-8» - PullRequest
2 голосов
/ 24 августа 2011

В течение некоторого времени я пытался решить довольно распространенную проблему, состоящую в основном из трех шагов:

  1. извлекает HTML-страницу с указанным URL и сохраняет ее содержимое в строке
  2. обнаружение кодировки содержимого из метаинформации html или заголовка HTTP
  3. перекодировать контент в UTF-8 для дальнейшей обработки

В реальном использовании у меня есть первый шаг, немного расширенный за счет таких функциональных возможностей, как наличие экземпляра «пользователь-агент» с cookie-jar, настраиваемое время ожидания и количество попыток GET, настраиваемое количество запросов на ограничение по времени и т. Д. .

Я реализовал rest-client обертку, но столкнулся с несколькими проблемами:

  • class-global RestClient.proxy настройки, конфликтующие, например, с couchrest (используя rest-client)
  • Замораживание: иногда тайм-аут вызывает остановку процесса. AFAIK больше моих друзей сталкиваются с той же проблемой с rest-client
  • redirect Location Синтаксический анализ URI: rest-client не удалось получить "http://www.ofertacarioca.com.br/index.aspx?cidade=4,Belo%20Horizonte", правильно сообщающий о недопустимом URI '/indexnew.aspx?cidade=4,Belo Horizonte' в заголовке Location результата 302, но curb отлично обрабатывает это до целевой страницы. Я собираюсь переопределить оболочку с использованием curb
  • проблемы с перекодированием на третьем шаге: я попытался определить кодировку из метаинформации html-страницы и заголовка HTTP (в этом порядке) для некоторых страниц, но безрезультатно

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

1 Ответ

0 голосов
/ 23 сентября 2011

Поскольку никто не ответил, мне нужно было реализовать решение на основе curb: curburger

Возможно, кто-то найдет это полезным.

...