Vous cherchez une bibliothèque pour concaténer les URL relatives / complètes.

J’écris un programme de raclage. Je collectionne tous les liens sur une page. Ils peuvent être des chemins relatifs. Par exemple:

foo.html /foo.html ../foo.html ../../foo.html 

Je peux les enchaîner à l’URL de la page (basepath) sur laquelle ils se trouvent, mais ce n’est pas tout à fait simple. Par exemple:

 http://www.example.com/foo + /bar.html = http://www.example.com/bar.html http://www.example.com/bla/?foo=bar + ../foo.html = http://www.example.com/foo.html 

Je me demande s’il existe un programme Erlang Lib, C Lib ou un programme CLI capable de trouver la concaténation appropriée pour moi?

En ce qui concerne CLI, wget a le commutateur --base :

  -B URL --base=URL 

Résout les liens relatifs utilisant l’URL comme sharepoint référence, lors de la lecture de liens à partir d’un fichier HTML spécifié via l’option -i / – input-file (avec –force-html ou lorsque le fichier d’entrée a été extrait à distance depuis un serveur) le décrivant en HTML). Cela équivaut à la présence d’une balise “BASE” dans le fichier d’entrée HTML, avec l’URL comme valeur de l’atsortingbut “href”.

Par exemple, si vous spécifiez http: //foo/bar/a.html pour l’URL et que Wget lit ../baz/b.html à partir du fichier d’entrée, il sera résolu en http: // foo / baz / b .html .

Donc, si vous l’exécutez pour sortir le fichier sur stdout et le lire avec votre script erlang, cela devrait fonctionner.

Vous pouvez utiliser ex_uri: resolve / 2 .