Page 1 sur 2

Script pour ouvrir et enregistrer liste url html

Posté : 15 août 2008, 17:45
par karlito
Bonjour à tous

Je suis nouveau sur ce forum et aussi en php :oops:

voila je cherche à creer un script ou un deja fait serai plus simple :wink:

j'ai une liste(1000 urls) formate comme cela "URL";"Description"

example : "http://www.monsite.com/test/galleries";"les galleries de la plage du gosier"

et donc je voudrai un script qui va ouvrir ou extraire le contenu de ces url et ensuite qui va les enregistrer

cela avec les premier mots de la description ce qui donnerai en gros ca

les-galleries-de-la-plage.html

cela ne dois pas etre bien complique malheureusement je suis une bille en php mais je veux bien apprendre :)

amicalement votre karlito ^^

Posté : 15 août 2008, 19:25
par Hywan
Hey :),

Tout d'abord : bienvenu chez PHPFrance :D !
Ensuite, j'imagine que ton fichier est au format CSV ? PHP a des fonctions natives qui permettent de traiter le format CSV. Tu as par exemple fgetcsv(). Je te laisse regarder le manuel et les fonctions associées.

Pour manipuler des fichiers (créer, écrire, fermer, etc.), tu as les fonctions comme fopen(), fwrite(), fclose(), etc.

Pour manipuler les chaînes de caractères, tu auras besoin de substr() ou str_replace() par exemple.

Comme tu dis, ton script est tout bête mais il faut connaître un minimum PHP. Tu trouveras des liens sur Internet facilement (siteduzero.com, phpdebutant.org, …).

Posté : 15 août 2008, 19:26
par katagoto
C'est pas du PHP qu'il te faut si tu veux ouvrir les pages, c'est du C/C++

Posté : 15 août 2008, 19:37
par Hywan
J'ai oublié de te dire que pour récupérer le contenu des pages, tu peux utiliser la fonction file_get_contents() qui est plus rapide que faire un fopen, fread, etc. Il y a beaucoup de fonctions, parcours bien la documentation.

@katagoto : Euh, tu es sérieux là ? C'est parfaitement faisable en PHP, alors fais attention à ce que tu dis s'il te plaît :). D'autant que son envie est de réaliser le script en PHP et qu'il est motivé pour apprendre, alors ne va pas l'envoyer sur un autre langage qui ferait la même chose …

Posté : 15 août 2008, 19:50
par katagoto
@HyWaN : d'après ce que je comprend tu problème, il veut ouvrire des URL, ou des pages distantes, dans ce cas, PHP n'est pas recommendé...
file_get_content() ne marchera que s'il à les autorisations, ce n'est pas très sécuriser de les donner à tout le monde.

Je donne la réponse qui me parait viable en fonction de ce que je comprend du problème...

Posté : 15 août 2008, 19:58
par Hywan
Sauf que là, il voulait le faire en PHP. Comme file_get_contents à — par défaut — les autorisations et qu'il peut lire les protocoles http nativement, je le conseille vers cette fonction.
Ta réponse était décalée et n'avait pas à apparaître à ce stade de la discussion. Si tu n'es pas sûr, tente de faire en sorte que l'on comprenne que tu n'es pas sûr de ta réponse, ou pose le contexte. Mais comme ça, de but en blanc, ce n'est pas raisonnable de donner ce type de réponse.

Posté : 15 août 2008, 20:06
par @rthur
ouvrire des URL, ou des pages distantes, dans ce cas, PHP n'est pas recommendé...
file_get_content() ne marchera que s'il à les autorisations, ce n'est pas très sécuriser de les donner à tout le monde.
En quoi PHP n'est pas recommandé pour cela?!? :shock:
:arrow: Concernant la sécurité, je ne sais pas quelle expérience tu as en gestion de serveur ou en hébergement mutualisé, mais ce que tu dis est complètement faux.


Pour recentrer le sujet, ce que tu veux faire, karlito, est tout à fait faisable, voici un exemple pour enregistrer le code HTML d'une page:
<?php
// On définit quelques variables
$url="http://www.google.fr";
$nom_fichier="google.html";

// On récupère le code HTML d'une page distante
$code_html=file_get_contents($url);

// On enregistre le code récupéré dans un fichier
file_put_contents($nom_fichier,$code_html);
?>
:!: Important : Si tu veux enregistrer les pages mais en incluant les images, les CSS, les scripts (de façon à pouvoir les revoir hors-connexion par exemple) alors il va falloir également parser le code des pages pour récupérer tous ces fichiers supplémentaires et modifier le code source initiale pour pointer vers les fichiers en local.
:arrow: C'est très long et fastidieux à faire, surtout si tu débutes.

Posté : 15 août 2008, 20:22
par katagoto
En quoi PHP n'est pas recommandé pour cela?!? :shock:
:arrow: Concernant la sécurité, je ne sais pas quelle expérience tu as en gestion de serveur ou en hébergement mutualisé, mais ce que tu dis est complètement faux.
Je pensais au CHMOD...

Et, en ce qui concerne PHP n'est pas recommandé pour ça, je parlais de la connexion à de nombreux serveurs distants...

Bref, pour éviter de polluer ce topic, et pour éviter toute pmolémique, j'ai eu tors, je le reconnais.

Posté : 16 août 2008, 01:55
par karlito
salut merci à tous pour vos messages

j'ai voulu essayer le code pour voir comment cela fonctionne

PHP:
<?php 
// On définit quelques variables 
$url="http://www.google.fr"; 
$nom_fichier="google.html" 

// On récupère le code HTML d'une page distante 
$code_html=file_get_contents($url); 

// On enregistre le code récupéré dans un fichier 
file_put_contents($nom_fichier,$code_html); 
?>

mais j'obtiens cette erreur

Parse error: syntax error, unexpected T_VARIABLE in /homepages/14/d145767036/htdocs/moon.php on line 7

la ligne 7 = $code_html=file_get_contents($url);

je suis en hébergement mutualisé 1&1


mon fichier ou sont mes urls est une exportation au format csv

Posté : 16 août 2008, 02:57
par iclo
Il te manque un point vigule à la fin de ta ligne précédente ;)

Posté : 16 août 2008, 09:51
par katagoto
Il te manque un point vigule à la fin de ta ligne précédente ;)
Je savais pas qu'on devais finir ses commentaire par un ; :lol:
<?php  
// On définit quelques variables  
$url="http://www.google.fr";  
$nom_fichier="google.html" ;

// On récupère le code HTML d'une page distante  
$code_html=file_get_contents($url);  

// On enregistre le code récupéré dans un fichier  
file_put_contents($nom_fichier,$code_html);  
?> 
L'erreur était ligne 4, oui, un oublis de ;

Posté : 17 août 2008, 01:54
par karlito
la j'ai teste le code mais je n'obtiens rien si ce n'est une erreur peux etre du au php4

j'ai renome le fichier en php5 pour voir

et ca me donne cela

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /homepages/14/d145767036/htdocs/z/mo/moon.php5 on line 7

Warning: file_get_contents(http://www.google.fr) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /homepages/14/d145767036/htdocs/z/mo/moon.php5 on line 7

à priori cela est du à la config du serveur sur lequel je n'ai pas la main serveur mutualisé

Cette erreur est dû à une désactivation de la directive allow_url_fopen contenue dans le fichier de configuration php.ini. La désactivation de cette directive est généralement réalisée par mesure de sécurité.


j'ai essaye sur un serveur qui je pense est en php5 et la pas d'erreur mais rien ne se passe
je ne c'est pas d'ailleur ce qu'il doit se passer si un dossier ou un fichier doit se creer :oops:

enfin d'apres cette ligne :>>
// On enregistre le code récupéré dans un fichier   
file_put_contents($nom_fichier,$code_html); 
cela doit s'enregistrer ou ? dans un nouveau dossier ou directement fichier google.html

merci de vos reponse je vais encore chercher :P

Posté : 17 août 2008, 06:10
par AB

enfin d'apres cette ligne :>>
// On enregistre le code récupéré dans un fichier   
file_put_contents($nom_fichier,$code_html); 
cela doit s'enregistrer ou ? dans un nouveau dossier ou directement fichier google.html

merci de vos reponse je vais encore chercher :P
Comme tu peux le voir si tu cliques si tu cliques sur la fonction qui te conduira au manuel, file_put_contents sert à enregistrer des données dans un fichier qui sera créé s'il n'existe pas. En l'occurence tel quel cela te permettrait d'enregistrer le code html dans un fichier sur ton serveur qui se nommera google.html, puisque dans l'exemple $nom_fichier="google.html"

Posté : 17 août 2008, 10:52
par Hywan
Comme tu peux le voir si tu cliques si tu cliques sur la fonction
si tu doubles-cliques :mrgreen: ?

Oui je sais où est la sortie …

Posté : 17 août 2008, 11:50
par @rthur
URL file-access is disabled in the server configuration in [...]

à priori cela est du à la config du serveur sur lequel je n'ai pas la main serveur mutualisé

Cette erreur est dû à une désactivation de la directive allow_url_fopen contenue dans le fichier de configuration php.ini. La désactivation de cette directive est généralement réalisée par mesure de sécurité.
En fait cela dépend de ton hébergeur.
Certains hébergeurs permettent à leur client de modifier le php.ini, c'est le cas par exemple de Celeonet (via l'interface client) mais aussi de 1and1 en créant un php.ini personnalisé:

D'après ton message d'erreur, il semblerait que tu sois chez 1and1, voici donc quelques pistes:
http://faq.1and1.fr/scripts/php/phpini/index.html

Code : Tout sélectionner

allow_url_fopen = On


j'ai essaye sur un serveur qui je pense est en php5 et la pas d'erreur mais rien ne se passe
je ne c'est pas d'ailleur ce qu'il doit se passer si un dossier ou un fichier doit se creer :oops:

enfin d'apres cette ligne :>>
// On enregistre le code récupéré dans un fichier   
file_put_contents($nom_fichier,$code_html); 
cela doit s'enregistrer ou ? dans un nouveau dossier ou directement fichier google.html
Si il ne s'affiche rien, c'est bon signe.
En revanche, un fichier devrait être créé dans le même répertoire que là où est situé ton script.
Si ce n'est pas le cas, il est possible qu'il y ait un problème de droit... Via un logiciel FTP modifie le chmod du répertoire qui contient ton script pour lui donner tous les droits en écriture.