Recuperer header d'une image rapidement - PHP - Programmation
Marsh Posté le 29-01-2010 à 11:56:29
ouai c'est pas terrible de joué avec les fonction str pour parser du contenu,
pour parser une page (x)html, c'est DomDocument, tu peux faire des requete xpath (ex : chercher toute les balises image)
Code :
|
Marsh Posté le 29-01-2010 à 13:50:50
Wah merci de la réponse j'en espérais pas tant.
C'est vrai que j'ai pas trop creusé du coté des fonctions Dom.
En plus ta fonction enlève les doublons (je suis noob en php donc quand je découvre des fonctions qui font simplement des trucs qui me semblent galère à faire ça m'émerveille)
Si tu as juste une petite explication sur ça :
Code :
|
que je ne comprend pas très bien.
En tout cas merci de ton aide
Marsh Posté le 29-01-2010 à 14:09:20
re, content que tu ai compris le reste du code, c'est tres bien
pour la fonction c'est un petit expression relationnelle, pour verifié si la line commence par : http,
ou pourrais juste faire
preg_match("/^http/" , $image)
ducoup si y'a pas, il rajoute la base de l'adresse
Marsh Posté le 29-01-2010 à 15:43:56
Ok compris.
Par contre ta fonction retourne (affiche), le contenu du tableau $images avec leur taille entre 2 balise <pre>, c'est bien ça?
J'ai pas vraiment besoin de la taille de l'image, c'est juste pour éviter de récupérer les icônes d'une page.
Je pense juste faire ça:
A la place de:
Code :
|
Mettre:
Code :
|
Juste histoire que ça s'adapte à mon interprétation de l'autre coté.
Marsh Posté le 01-02-2010 à 22:11:08
Merci ça marche nickel!
Une vingtaine de seconde pour récupérer les images d'une page.
Mon site est en local pour l'instant, peut être faudra t'il moins longtemps quand il sera en ligne.
Marsh Posté le 01-02-2010 à 22:42:36
hello,
ouai c'est pas tip top, mais c'est d'aller cherche les header qui prend du temps.
APres a quoi sert exactement ton script, y'a peux etre une autre solution
Marsh Posté le 01-02-2010 à 23:14:04
En fait, l'utilisateur fournit l'adresse d'une page.
Le script récupère alors toutes les adresses des images contenus sur cette page et affiche les images dans une visionneuse (en javascript d'ailleurs j'ai d'autres soucis avec cette visionneuse, voir mon autre topic)
L'utilisateur choisit celle qui l'intéresse et à ce moment là je rehost l'image choisie.
Je pense pas qu'il y ait un meilleur moyen...
Marsh Posté le 02-02-2010 à 09:58:16
faudrais essayer que l'utilisateur affiche la page (en la rendant invisible en espece d'iframe), et récupérer les image a partir du cache du client, a voir...
Marsh Posté le 02-02-2010 à 10:28:32
A voir pour une future amélioration...
Pour l'instant ça va bien comme ça, j'ai un gif qui indique le chargement des images pour patienter.
Facebook procède de la même façon je pense quand on insère un lien dans un message, j'ai remarqué ça ce week end...
Marsh Posté le 02-02-2010 à 14:09:09
tu peux jouer avec le buffer sinon,
ex : les liens s'affiche petit a petit
je te post un code
Marsh Posté le 02-02-2010 à 22:52:40
Je viens de tester de rajouter les fonctions de buffer, ça m'a retourné ça:
<b>Notice</b>: Use of undefined constant flush...
J'ai peut être mal utilisé ces fonctions, car j'ai adapté un peu la fin de ton script...
Marsh Posté le 02-02-2010 à 22:57:09
remet ton code, ca fait comme si t'avais pas mis les parenthèses
Marsh Posté le 02-02-2010 à 23:00:29
quel boulet...
EDIT: ceci dit ça ne change pas la durée de récupération de la liste d'image.
J'appel ce script par de l'ajax ceci explique peut être cela...
Marsh Posté le 02-02-2010 à 23:12:41
ah bah ouai mince, t'as APC d'installer ? t'utilisequoi comme lib pour ton appel ajax ?
Marsh Posté le 03-02-2010 à 15:12:13
Non plus (si j'ai bien compris...)
Pour l'instant je test le site en local sur ma machine et j'ai activé le minimum extension.
Marsh Posté le 05-05-2010 à 11:29:32
J'up le sujet car j'ai un petit souci:
Code :
|
Ce code fonctionne bien quand les images sont stockées dans un sous dossier du repertoire de la page parsée.
Par contre quand les images sont stockées à un tout autre endroit, ça foire evidemment...
Exemple:
Je lui passe l'url http://online.carrefour.fr/Produit [...] roduit.php
Les images sur cette pages sont stockées ici: http://online.carrefour.fr/images/ [...] roduit.gif
alors que mon script va me retourner l'adresse de l'image http://online.carrefour.fr/Produit [...] roduit.gif
(Oui j'ai bien vu le double slash qui vient de mon script mais si je ne l'inclue pas ça ne fonctionne pas sur d'autres sites...)
Y a t'il moyen de modifier ça pour que ça s'adapte à toutes les arborescences de site?
Marsh Posté le 07-05-2010 à 15:54:09
Code : |
ca veut rien dire ça
l'argument que prend dirname() est un chemin absolu dans un système de fichier, pas un bout d'URL.
Marsh Posté le 07-05-2010 à 16:00:32
theredled a écrit :
|
Nein, ça dirname sur ce que tu veux. Ça regarde même pas le FS, mais bêtement les différentes directory separators
Marsh Posté le 07-05-2010 à 16:35:26
Ouep c'est d'ailleurs ça qui me fait tout déconner.
Parce que ça prend les directory separators de l'url de la page passée en argument mais pas de l'image ciblée. (bien souvent c'est les mêmes, mais parfois, parfois... non)
Marsh Posté le 07-05-2010 à 17:22:38
FlorentG a écrit : |
bon ok
Marsh Posté le 02-06-2010 à 08:48:36
Personne pour expliquer comment récupérer le chemin complet des images présentes sur une page?
Marsh Posté le 02-06-2010 à 09:57:36
garath_ a écrit : Personne pour expliquer comment récupérer le chemin complet des images présentes sur une page? |
Si tu n'as pas de <base> dans ton head :
Si l'URL de l'image est relative à la page (dir/img.jpg) :
dirname(l'URL de la page).'/'.$url_image;
Si l'URL de l'image est relative au NDD (/dir/img.jpg) :
'http://'.parse_url($url_page, PHP_URL_HOST).$url_image;
Si l'URL de l'image est absolue (http://machin.com/dir/img.jpg) :
Tu la garde telle quelle
C'est ça que tu veux faire ?
Marsh Posté le 02-06-2010 à 12:21:23
En partie oui.
Il arrive parfois que sur une page http://www.url.fr/bidule/truc , les images soient dans http://www.url.fr/image où ailleurs...
Enfin dans un dossier non relatif à l'adresse de la page mais au NDD comme tu as dit.
Seulement comme je veux pouvoir récupérer des images sur n'importe quel site, indifféremment de leur localisation des images, je ne sais pas faire un truc universel...
Marsh Posté le 02-06-2010 à 12:27:51
garath_ a écrit : En partie oui. |
Bah si tu fais ce que j'ai dit, tu parses déja 95% des pages web, non ?
Marsh Posté le 02-06-2010 à 13:33:47
Après relecture de ce que tu proposes il semble bien oui .
Si je comprend bien il faut que je rajoute une condition dans cette partie du code (qui construit une adresse d'image relative à l'adresse de la page ou sinon garde l'adresse absolue):
Code :
|
Cette condition testerai si l'url de l'image est relative au NDD. C'est ça?
Marsh Posté le 02-06-2010 à 14:12:14
Voilà, tu regardes juste si elle commence par un slash quoi.
Marsh Posté le 02-06-2010 à 15:56:36
Reply
Marsh Posté le 28-01-2010 à 20:16:05
J'utilise un petit script qui vient parser le code source d'une page pour récupérer tous les liens des images d'une url.
Celui-ci retourne tous les liens des images dont le poids est supérieur à une certaine valeur.
Seulement, suivant la page parsée cela peut prendre jusqu'à une minute...
J'aimerais savoir s'il y a une meilleure façon de faire qui serait plus rapide.
Voici le code:
Message édité par garath_ le 29-01-2010 à 13:27:55