Convertir une url relative en url absolue - C++ - Programmation
Marsh Posté le 09-04-2010 à 17:21:25
Salut
Comment sont stockés tes liens, quel OS utilises-tu?
Marsh Posté le 09-04-2010 à 18:01:44
alors mes liens sont dans des "string", et j'utilise linux
Marsh Posté le 09-04-2010 à 23:22:25
Des lien relatifs c'est ça:
lien "père" :
http://adresse.lalala.pouet.com
lien "relatif":
images/carotte.jpg
?
Si c'est le cas et que tu as
std::string pere, relatif, absolu;
tu dois pouvoir faire
absolu = pere+ "/" + relatif;
et tu obtiens
absolu == "http://adresse.lalala.pouet.com/images/carotte.jpg
Si tu as besoin repérer des sous chaines dans tes strings, tu as des méthodes comme find, substr. etc...
http://www.cplusplus.com/reference/string/string/
Pour décomposer ta chaîne, par exemple chaque partie entre deux slash /, boost::tokenizer je pense.
Marsh Posté le 09-04-2010 à 23:34:35
ca semble simple effectivement, mais ca l'est beaucoup moins
Imagine par exemple que j'ai l'adresse suivante :
?page=http://www.google.fr#paragraphe1 lorsque j'appelle la page www.monsite.com/undossier
tu vois bien que ta méthode ne donne pas le bon lien relatif
Marsh Posté le 10-04-2010 à 09:04:34
Heu il y a quoi qui ne vas pas dans ce que ptitchep t'as donné?
Marsh Posté le 10-04-2010 à 10:32:19
pardon, ce que tu avais dit était effectivement correct, j'avais mal lu
Le problème est surtout de récupérer le dossier père :
par exemple il semble difficile de se baser sur un / du fait que lorsque l'on appelle la page www.monsite.com/undossier alors le dossier père est www.monsite.com/undossier
De même il peut être difficile de se baser sur les points, parce que l'on pourrait avoir
www.monsite.com/un.dossier/
Donc le problème revient à trouver une méthode efficace pour trouver le dossier père
Marsh Posté le 10-04-2010 à 11:39:33
Si t'as un truc genre
www.monsite/undossier/page.php?....
C'est facile, tu te repères par rapport au dernier /
Marsh Posté le 10-04-2010 à 11:47:03
ReplyMarsh Posté le 10-04-2010 à 12:04:57
Non mais attend, tu veux bien nous noter les URL que tu risques de rencontrer, et le résultat que tu voudrais obtenir pour chaque URL?
Parce que j'ai l'impression que c'est pas totalement clair pour toi (ou du moins, c'est l'impression que tu donnes)
Marsh Posté le 10-04-2010 à 12:19:51
www.monsite.com/undossier -> dossier parent = www.monsite.com/undossier/
www.monsite.com/undossier/ -> dossier parent = www.monsite.com/undossier/
www.monsite.com/mapage.htm -> dossier parent = www.monsite.com/
www.monsite.com/un.dossier -> dossier parent = www.monsite.com/un.dossier/
www.monsite.com/un.dossier?page=1 -> dossier parent = www.monsite.com/un.dossier/
...
Marsh Posté le 10-04-2010 à 13:29:56
C'est loin d'être génial vu que c'est fait en 2-2 mais ça trouve le dossier parent de tes exemples:
Code :
|
Citation : ./essai |
Marsh Posté le 10-04-2010 à 13:30:08
mmm...
Là comme ça, je te dirai qu'à moins que tu fasses une liste des exentions de fichier, tu ne pourras pas..
Ne serait-ce que pour la raison que
www.monsite.com/un.dossier?page=1
Pourrait tout aussi bien être équivalent à
www.monsite.com/index.php?page=1 , pour lequel tu t'attendrais plutôt à avoir www.monsite.com/ comme dossier parent.
Edit: Oui mais ptitchep, tu "triches" parce que tu cherches .htm dans le path. Donc comme je l'ai dit : Si tu as une liste des extensions (.php, .xml, .jpg ,...) alors ça joue, sinon ça ne marchera pas
Marsh Posté le 10-04-2010 à 14:19:49
esox_ch a écrit : |
Oui en effet, j'ai fait ça vite fait. On peut en effet faire une liste d'extensions, un iterateur dessus etc. De toute façon mon exemple ne marche que pour 1% des cas mais je ne suis pas là pour faire son travail. Je donne un exemple.
Marsh Posté le 10-04-2010 à 14:28:16
Tout à fait, je répondais juste déjà à la question :
Esox, pourquoi est-ce que tu es si défaitiste que ça, alors que ptitchep a résolu le problème
Marsh Posté le 09-04-2010 à 17:02:06
Bonjour,
J'ai une page internet que je scanne et j'obtiens par conséquent les liens qu'elle comporte via d'autres pages.
Certains de ces liens sont relatifs.
y aurait-il un moyen de les convertir en liens absolus, sachant que je dispose bien entendu de l'adresse de la page sur laquelle j'ai trouvé le lien ?
Merci d'avance
nc
PS : google ne m'a pas été d'une grande aide