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 .