В течение некоторого времени я пытался решить довольно распространенную проблему, состоящую в основном из трех шагов:
- извлекает HTML-страницу с указанным URL и сохраняет ее содержимое в строке
- обнаружение кодировки содержимого из метаинформации html или заголовка HTTP
- перекодировать контент в 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 (в этом порядке) для некоторых страниц, но безрезультатно
Мне бы очень хотелось узнать о какой-нибудь классной жемчужине, которая бы справлялась с такими потребностями, или о некоторых интригующих подсказках по универсальному решению, если таковые имеются.