Script pour ouvrir et enregistrer liste url html

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Script pour ouvrir et enregistrer liste url html

par karlito » 17 août 2008, 17:42

Salut à tous j'ai donc creer le fichier php.ini est cela marche nikel :o
je suis quand meme oblige de renommer mon fichier en .php5 pour que ca marche mais bon pas grave

la creation de google.html se fais nikel l'inconvenient, les images ne s'affichent pas il faudrai que j'arrive à recuperer à la source entiere de l'image car :

file:///C:/logos/olympics08_rowing.gif

au lieu de :

http://www.google.fr/logos/olympics08_rowing.gif



Re salut update de mon message : :)

voila donc j'arrive à creer les fichiers j'ai meme reussi sur deux url differente
mais je pense que je pourrai donner l'instruction une seule fois au lieu de repeter à chaque fois
pour chaque url je ne c'est pas comment faire :oops:
voici mon code
<?php   
 
 
$url="http:www.google.fr";
$desc="google-moteur-de-recherche.html";
  

$code_html=file_get_contents($url);   


file_put_contents($desc,$code_html);   

#------------------------------------------

$url="http://www.phpfrance.com";
$desc="php-france-best-php-website.html";

$code_html=file_get_contents($url);   


file_put_contents($desc,$code_html);   


?> 
sur 1000 urls ca risque d'allourdir grave le script
merci pour vos reponses.

par @rthur » 17 août 2008, 11:50

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.

par Hywan » 17 août 2008, 10:52

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 …

par AB » 17 août 2008, 06:10


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"

par karlito » 17 août 2008, 01:54

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

par katagoto » 16 août 2008, 09:51

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 ;

par iclo » 16 août 2008, 02:57

Il te manque un point vigule à la fin de ta ligne précédente ;)

par karlito » 16 août 2008, 01:55

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

par katagoto » 15 août 2008, 20:22

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.

par @rthur » 15 août 2008, 20:06

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.

par Hywan » 15 août 2008, 19:58

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.

par katagoto » 15 août 2008, 19:50

@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...

par Hywan » 15 août 2008, 19:37

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 …

par katagoto » 15 août 2008, 19:26

C'est pas du PHP qu'il te faut si tu veux ouvrir les pages, c'est du C/C++

par Hywan » 15 août 2008, 19:25

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, …).