Depuis un certain temps, j'essaie de résoudre un problème assez courant qui consiste essentiellement en trois étapes :
- Récupère la page html avec l'URL spécifiée et stocke son contenu dans une chaîne.
- détecter l'encodage du contenu à partir des méta-informations html ou de l'en-tête HTTP.
- recoder le contenu en UTF-8 pour un traitement ultérieur.
Dans l'utilisation réelle, la première étape a été un peu étendue avec des fonctionnalités telles qu'une instance "user-agent" avec cookie-jar, un délai d'attente et un nombre de tentatives GET configurables, une limitation du nombre de requêtes par période de temps configurable, etc...
J'ai mis en place rest-client
mais je rencontre plusieurs problèmes :
- classe-globale
RestClient.proxy
les réglages sont en conflit avec, par exemplecouchrest
(en utilisantrest-client
lui-même) - gel : parfois, le délai d'attente provoque le gel du processus. AFAIK plus de mes amis rencontrent le même problème avec
rest-client
- rediriger
Location
Analyse syntaxique des URI :rest-client
ne parvient pas à récupérer correctement l'adresse "http://www.ofertacarioca.com.br/index.aspx?cidade=4,Belo%20Horizonte", en raison d'un URI non valide, "/indexnew.aspx?cidade=4,Belo Horizonte", dans le fichierLocation
du résultat du 302 maiscurb
gère cela parfaitement jusqu'à la page cible. Je suis sur le point de réimplémenter le wrapper avec l'utilisation decurb
- les problèmes de recodage dans la troisième étape : J'ai essayé de détecter l'encodage à partir des méta-informations de la page html et de l'en-tête HTTP (dans cet ordre) pour certaines pages, mais sans succès.
J'aimerais bien savoir s'il existe un joyau qui répondrait à ce genre de besoins ou s'il existe une solution universelle intrigante.