[EasyPHP] Charger un tableau HTML dans MySQL

Fermé
harry le ravi - 25 juin 2009 à 11:50
 harry le ravi - 25 juin 2009 à 21:00
Bonjour à tous,
J'ai réussi à utiliser un script .vbs pour récuper un tableau sur un site web et de le charger dans un fichier html contenant seulement le tableau.
Ce tableau est structuré et cases du tableau contiennent toujours le même type de donnés.

J'aimerai maintenant charger les données du tableau HTML dans une base MySQL (EasyPHP) pour un traitement futur.

J'aimerai savoir comment je peux inserer les données dans la base MySQL de manière automatique et régulière juste après avoir récupéré le tableau du web.

Merci d'avance.
A voir également:

14 réponses

giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 14:30
Bonjour,

en quel format est le tableau récuipéré ?
une idée qui fonctionne :
copier le tableau
le coller dans excel
le sauvegarde en csv
l'importer dans le sgbd

0
harry le ravi
25 juin 2009 à 14:54
Le fichier récupéré est un fichier HLMT contenant seulement un tableau de la forme:
<HTML>
<TABLE>
.....
</TABLE>
</HTML>

De plus, ce fichier qui est une page web au final peut être ouvert dans excel et chaque donnée d'une cellule du tableau HTML est transféré dans une cellule excel.
Mais je ne pense pas que ce soit une méthode très simple pour l'automatisation de la tâche. Sauf peut être en .vbs car il me semble que ce language peuyt controller les applications MS.

Mais si vous avez une solution qui permet d'utiliser directement le fichier HTML qui soit plus simple je suis prenneur.
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 15:21
Bonjour,

si c'est un tableau d'un site qui n'est pas le vôtre je ne vois pas d'autre manipulation.
si ce tableau est sur votre site, un scripy php peut créer un fichier csv et vous pouvez faire un téléchargement du fichier ainsi créer.

sinon je ne vois pas
0
harry le ravi
25 juin 2009 à 15:39
Je me suis peut être mal exprimé.

Le tableau provient d'une page web d'un site qui n'est pas le mien.

Avec un script .vbs je peux copier le code du tableau et créer un fichier HTML avec ce code et les balises <HTML> ce qui fait que j'ai ce tableau en local sur ma machine.

Je suis interressé par votre solution scripty php pour créer un fichier csv à partir du fichier HTML à condition que je puisse par la suite importer les données du csv vers ma base MySQL.

Si cela est possible et si cela ne vous gène pas, j'aimerai bien que vous me donniez la marche à suivre.

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 15:45
$filename = "nom.csv";
//ouvrir le fichier
if (!$filecsv = fopen($filename, 'w')) {
echo "Impossible d'ouvrir le fichier ($filename)<br>";
exit;
}
$zone = $d."\n";

// $d contient les champ séparés par virgule
if (!fwrite($filecsv, $zone)) {
echo "Erreur d'écriture dans le fichier ($filename)<br>";
exit;
}

fclose($filecsv);
0
harry le ravi
25 juin 2009 à 15:51
Où indique-t'on l'emplacement du fichier HTML dans ce script?

Ce script peut-il etre lancé automatiquement?

Merci.
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 15:55
je n'ai mis que la partie création du csv.
il faut lire le fichier htm pour créer ligne / ligne le fichier csv

il me vient une autre idée pour capturer la page : voir avec un aspirateur de site.

mais dans toutça je ne vois pas bien comment tout automatiser
0
harry le ravi
25 juin 2009 à 16:28
Pour la création du csv : ok
Je ne vois pas très bien comment lire le fichier htm pour créer ligne / ligne le fichier csv . Je ne m'y connais pratiquement pas en PHP (je manque de pratique).
Si vous pouvez m'indiquer comment lire le fichier HTML et comment insérer chaque contenu de cellule dans le fichier .csv


Pour récupérer le tableau sur le web, je peux utiliser le planificateur de tache ou bien une boucle avec une fonction sleep pour la périodicité.

Il me semble que l'on peut lancer des scripts PHP de manière périodique sur un serveur apache? A confirmer.


Mais l'automatisation je peux m'en occuper plus tard.

Voici mes checkpoints:
- récupérer les données du web
- insertion des données dans la base MySQL
- traitement des données dans la base MySQL
- automatisation des précédentes taches
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 17:35
Bonsoir,

J'ai le même problème que vous : comment récupérer les données du web sans faire de manipulation.
après on peut même envisager d'alimenter la base sql directement avec le script php, sans passer par les phases intermédiaires
0
harry le ravi
25 juin 2009 à 18:22
Moi j''utilise ce script dans un fichier .vbs sous windows

Set ie = CreateObject("InternetExplorer.Application") //objet de controle de IE
ie.Navigate ("Site WEB") // navigation vers la page web souhaité (en mode invisible)
do while ie.readystate<>4 // boucle tant que la page web n'est pas totalement chargée
WScript.Sleep (100) // script au repos
Loop // fin de boucle
WScript.Sleep (1000) //script au repos
Set fs = CreateObject("Scripting.FileSystemObject") //objet de controle systeme pour création de fichier
Set fich = fs.OpenTextFile("Chemin d'access fichier HTML", 2, true) // ouverture du fichier
fich.write "<HTML>"&ie.document.getElementsByTagName("table").item(1).outerhtml&"</HTML>"
//enregistrement du contenu du deuxième élément HTML TABLE de la page web dans le fichier
ie.Quit // fermeture de IE
Set ie=Nothing

Ce script fonctionne parfaitement rant que la structure HTML de la page reste inchangé.
Si cela peut vous aider à récupérer des données d'une page web.
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 18:41
On recadre car on ne doit pas être en phase.
tout ce que j'ai dit jusqu'à maintenant c'est avec une idée PhP.
pas VBs.

un script Php permet (mais vous le savez sans doute) de lire un fichier text, d'en manipuler les données et de mettre à jour une base de données.

si ainsi le fichier lu contient par exemple val1 val2 et val3
on peut facilement faire une requêtre sql
insert into matable values('val1','val2','val3');


0
harry le ravi
25 juin 2009 à 18:57
Ah pardon j'ai fait erreur.

J'ai trouvé un site web assez utile et je pense qu'il y a ce que vous recherchez:
http://jacxl.free.fr/cours_xl/cadres.html?ex=

De mon coté, je pense qu'il est possible que je puisse modifier mon tableau HTML avec un script .vbs en retirant tout les espaces les balises <(/)TABLE> et <(/)TR> puis en remplacant les balises <(/)TD> par un espace.
Le fichier text pourra être ainsi importé dans MySQL avec la commande
insert into matable values('val1','val2','val3');

Dites moi si je me rapproche du but.

Autre question, peut-on mettre un script php en pause comme on peut le faire en vbs avec la commande WScript.Sleep (100)?

Merci
0
giheller Messages postés 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
25 juin 2009 à 20:53
bonsoir,
à la place d'un espace mettez plutôt un caractère spécial, genre ; qui permettrait à php de faire une instruction explode
0
harry le ravi
25 juin 2009 à 21:00
D'accord j'y penserai.

Si jamais vous vous y connaissez en vbs, j'aimerai bien que vous me donniez les commandes pour supprimer des espaces dans fichier texte et remplacer les balises par un caractère spécial.

J'ai fait la demande sur d'autre forums mais si jamais vous savez ca m'aiderai bien.

Si jamais ce n'est pas le cas, je vous remerci pour votre aide et je vous souhaite une bonne continuation.
0