Parser une page web en utilisant php

WRInaute passionné
Bonjour,

a priori, le niveau en programmation n'est pas au top ;-) Utilise effectivement les expressions régulières pour analyser ton texte mais si tu poses la question XML vs. HTML, c'est pas gagné... :-D Il y a plein de sites qui donnent plein de conseils en programmation, une recherche devrait te donner des solutions à ton souci, mais là, ta question est trop peu précise : c'est un peu comme si tu demandais "qu'est-ce qu'il faut que je fasse pour faire à manger?" C'est trop vague.

Précise ton idée.
 
WRInaute occasionnel
Salut,

J'essaie de parser une page ayant une extension .aspx mais je n'y arrive pas ! Cette page est accessible via un login et mot de passe. J'ai déjà parsé d'autres page avec un bout de code php du style :

$url_a_parser = "http://mon_login:mon_mot_de_passe@www.le-site-a-parser.aspx?page_accessible_via_abonnement.aspx";
$url_fp = @file_get_contents($url_a_parser);
echo "$url_fp";

Sur la homepage du site à parser j'arrive à voir leur page lorsque je fais un echo "$url_fp" mais lorsque je me loggue sur une autre page de leur site (avec mon login + mon mot de passe) ça ne marche plus, lorsque je fais un echo "$url_fp" de cette page il ne s'affiche rien ! C'est comme s'ils avaient bloquer cette fonction de parser. Quelqu'un peut-il m'aider à y comprendre quelque chose je ne connais pas du tout l'asp comme language de programmation ?

D'avance merci pour votre aide.
 
WRInaute accro
Que ce soit de l'asp n'y change rien, c'est le HTML généré que tu parses, non le codes avant interprétation du serveur. Et amha, si tu te retrouves avec une page blanche, c'est qu'il y a fort à parier que le site en face n'apprécie pas des masses que tu récupères son contenu ainsi.
 
WRInaute occasionnel
Merci pour ta réponse.

Ca veux dire qu'ils ont mis quelque chose dans leur code qui empêche de parser, c'est ça ?

Si je post ici le code asp de leur page, penses-tu pouvoir trouver ce qui empêche de parser ?
 
WRInaute passionné
comment penses tu pouvoir avoir le code asp de leur page ? je pense que tu devrais sérieusement (re)voir les règles de bases client/serveur
 
WRInaute accro
Si ils ont mis en place un système qui bloque le parsage de leurs pages, c'est qu'ils ne veulent pas que tu parses leur page j'imagine. Sinon, le plus simple serait de leur demander, non ?

A mon avis c'est sans doute au niveau du serveur que le nécessaire est fait pour ne pas que tu puisses parser le contenu sécurisé.
 
WRInaute occasionnel
Ok je me suis mal exprimé, je pensais plutôt poster le code html de leur page en espérant pouvoir trouver dans leur code le hic qui bloque le parsage.

Sinon, le plus simple serait de leur demander, non ?
Je leur ai demandé à 3 reprises mais pas de réponse, ils font le mort :(

Le problème c'est que cette société qui propose cet abonnement est en situation de monopole mondial dans mon domaine d'activité et qu'ils ont sur leur site web des infos qu'ils n'exploitent pas (volontairement ou involontairement) mais que moi je trouve très pertinentes pour mes internautes (et futurs consommateurs), donc en gros : vous pouvez accéder à mon abonnement payant (je veux bien votre fric) mais je restreint l'accès à mon site afin que je puisse contrôler l'information qui en sortira, trouvez-vous cela très concurrentielle, très en adéquation avec le libre échange, c'est pas très cool, non ?
 
WRInaute occasionnel
tu vas pas te faire que des amis ici toi ...
ben quoi, tu défends donc les positions de monopole, c'est ça ?

Je ne vais pas t'expliquer la raison exacte que j'ai à faire cela mais crois moi cette raison est bien fondée et justifiée !

Dans les positions de monopole total il y a toujours des abus, es-tu d'accord avec ça ?
 
WRInaute accro
toto2525 a dit:
tu vas pas te faire que des amis ici toi ...
ben quoi, tu défends donc les positions de monopole, c'est ça ?

Je ne vais pas t'expliquer la raison exacte que j'ai à faire cela mais crois moi cette raison est bien fondée et justifiée !

Dans les positions de monopole total il y a toujours des abus, es-tu d'accord avec ça ?

Tu mélanges un peu tout. Mais à la base, le principe de la société, c'est "on ne se fait pas justice soi même, on respecte la loi et si elle ne convient pas on la fait changer". Et quand ça n'est pas respecté, figures toi que c'est là que les petits se font le plus écraser...
 
WRInaute occasionnel
c'est très humain de juger autrui sans avoir les tenants et aboutissants d'une situation mais bon je ne vais pas vous jeter la pierre, on est tous pareil !

C'est une belle leçon de solidarité et d'entraide, merci à tous d'avoir pris plus de temps à me juger, que de temps à trouver une solution à mon problème technique !
 
WRInaute accro
toto2525 a dit:
C'est une belle leçon de solidarité et d'entraide, merci à tous d'avoir pris plus de temps à me juger, que de temps à trouver une solution à mon problème technique !
il me semble que UsagiYojimbo t'a répondu
UsagiYojimbo a dit:
Si ils ont mis en place un système qui bloque le parsage de leurs pages, c'est qu'ils ne veulent pas que tu parses leur page j'imagine. Sinon, le plus simple serait de leur demander, non ?

A mon avis c'est sans doute au niveau du serveur que le nécessaire est fait pour ne pas que tu puisses parser le contenu sécurisé.
 
WRInaute accro
De notre point de vue il ne s'agit pas tant d'un problème technique que d'un problème légal : tu n'es pas censé récupérer ainsi ce contenu.

Même si il était techniquement possible de passer outre les limites mises en place par le développeur du site (ce qui reste à vérifier), WRI n'est pas le genre du forum où on t'expliqueras comment contourner les barrières que tout webmaster est en droit de mettre en place sur son site.

Le net n'est pas un espace de non-droit où tout ce qui est accessible doit pouvoir être pillé pour une utilisation qui n'a pas été autorisée par son créateur.
 
WRInaute occasionnel
tu n'es pas censé récupérer ainsi ce contenu
le contenu que je cherche à récupérer automatiquement sur leur site est accessible sur leur site par tous les membres (il n'y a donc rien d'illégal à récupérer cette info !), je pourrais faire cette opération de mise à jour manuellement en TOUTE légalité chaque mois, mais le problème c'est qu'il existe plus de 10 000 catégories de produits, donc imaginez un peu le temps que ça me prendrait manuellement, c'est donc pas un problème d'illégalité mais c'est plus un soucis de récupérer automatiquement (via des requêtes et des regex pour traiter dans leur code html l'info qui m'intéresse) cette info qui est accessible par tous les membres qui se connectent sur leur site !
 
WRInaute accro
toto2525 a dit:
tu n'es pas censé récupérer ainsi ce contenu
le contenu que je cherche à récupérer automatiquement sur leur site est accessible sur leur site par tous les membres (il n'y a donc rien d'illégal à récupérer cette info !)
à récupérer cette info pour ses besoins perso, non ? pour republier ailleurs, si.
A toi de voir si tu veux passer de l'autre côté de la ligne blanche :wink:
 
WRInaute accro
Je pense que ce que ce site n'aime pas, c'est la récupération automatique de leurs contenus. C'est un peu logique, si c'est leur fond de commerce, il ne vont pas le laisser sortir et être réutilisé aussi facilement que ça.
 
WRInaute accro
toto2525 a dit:
tu n'es pas censé récupérer ainsi ce contenu
le contenu que je cherche à récupérer automatiquement sur leur site est accessible sur leur site par tous les membres (il n'y a donc rien d'illégal à récupérer cette info !), je pourrais faire cette opération de mise à jour manuellement en TOUTE légalité chaque mois, mais le problème c'est qu'il existe plus de 10 000 catégories de produits, donc imaginez un peu le temps que ça me prendrait manuellement, c'est donc pas un problème d'illégalité mais c'est plus un soucis de récupérer automatiquement (via des requêtes et des regex pour traiter dans leur code html l'info qui m'intéresse) cette info qui est accessible par tous les membres qui se connectent sur leur site !

Mais il y a une énorme différence entre avoir une info accessible sur un site, et pouvoir la traiter chez soi.
Scoop : la constitution de l'information, sa mise à jour, son maintien, son classement, etc... ont un cout. Et ce cout, c'est, décidé par le propriétaire de cette info, qui doit en supporter le cout c'est
ou bien tu es membre et tu peux consulter (éventuellement en payant un peu) et tu "payes" en travaillant à la main
ou bien tu payes pour avoir cette info

Autrement dit, et comme je l'avais dit un jour, y'a rien de gratuit en ce bas monde, et le temps c'est de l'argent.

Le deuxième problème derrière, c'est "comment peuvent ils être sûrs que tu ne vas pas refiler l'info à quelqu'un d'autre ? " et donc diffuser gratuitement leurs données qu'ils veulent eux vendre ? Le fait que tu les affiche directement, ou que tu en fasse un traitement automatisé pour procurer un avantage à tes visiteurs et donc à booster ton site n'est pas ce qui compte le plus.

Ce qui est important, c'est que, quelle que soit la raison, tu veux utiliser des données que tu cherches à obtenir frauduleusement, c'est à dire contre la volonté de leur "propriétaire auteur".
 
WRInaute occasionnel
Ce qui est important, c'est que, quelle que soit la raison, tu veux utiliser des données que tu cherches à obtenir frauduleusement, c'est à dire contre la volonté de leur "propriétaire auteur".
Faux : puisque je peux obtenir ces infos de façon manuelles et légales en me connectant sur leur site, ils NOUS fournissent ces infos sur leur site. Ce qui est chiant c'est leurs récupérations : manuellement c'est possible en faisant des copier-coller ; automatiquement ça bloque à cause du code qu'ils ont mis et qui bloque le parsage. Je ne cherche pas à faire quelque chose d'illégal mais juste à automatiser la façon de récupérer ces infos qui sont accessibles par tous les membres de ce site. Je ne cherche pas non plus à revendre ces infos, elles me servent juste à mon propre usage, c'est tout !
 
WRInaute accro
toto2525 a dit:
Ce qui est important, c'est que, quelle que soit la raison, tu veux utiliser des données que tu cherches à obtenir frauduleusement, c'est à dire contre la volonté de leur "propriétaire auteur".
Faux : puisque je peux obtenir ces infos de façon manuelles et légales en me connectant sur leur site

Justement, c'est bien là la différence : tu es habilité, via ton paiement, à avoir accès à ces données mais pas à en automatiser la récupération. Pouvoir lire une page de contenu sur un site ne veux pas dire que tu peux en faire ce que tu en veux.

Que tu veuilles ou non les utiliser de manière personnelle leur importe peu, je pense qu'ils préfèrent se prémunir de toute récupération automatisée (ce qui est bien compréhensible).
 
WRInaute occasionnel
Pouvoir lire une page de contenu sur un site ne veux pas dire que tu peux en faire ce que tu en veux.
Effectivement si tu es abonné au site lemonde.fr et que tu paies pour lire des articles sur leur site et que tu mettes en place un système automatique qui récupére ces articles de presses pour les mettre sur ton site, c'est pas légale du tout ! Mais dans mon cas, et je le répète, cet abonement est unique au monde, il est indispensable au bon déroulement de notre activité, ils ont un réel monopole ! Je tiens à préciser que je suis dans un domaine d'activité bien particulier qui représente des enjeux économiques qui se chiffrent en milliards d'euros, à ma connaissance il n'y a AUCUN autre secteur d'activité qui se trouve dans le même cas de figure que nous.

Juste une dernière précision, aujourd'hui je récupère automatiquement sur leur ancien site ces infos et je fais cela depuis plusieurs années, si cela était illégal ils m'auraient dèjà supprimé mon abonnement et l'accès à leur site, non ? Je cherche à faire la même chose mais sur leur nouveau site, ni plus, ni moins !
 
WRInaute accro
toto2525 a dit:
Juste une dernière précision, aujourd'hui je récupère automatiquement sur leur ancien site ces infos et je fais cela depuis plusieurs années, si cela était illégal ils m'auraient dèjà supprimé mon abonnement et l'accès à leur site, non ? Je cherche à faire la même chose mais sur leur nouveau site, ni plus, ni moins !
peut-être que leur ancien site n'était techniquement pas dans la possibilité de filtrer ce type de pratique et qu'ils ont profité du développement du nouveau site pour bloquer toute tentative
 
WRInaute accro
Le fait même que le système ait été mis en place prouve qu'ils ne VEULENT pas que ces informations soient récupérées automatiquement, et cela quel que soit l'usage que tu comptes en faire.

Le fait que cet abonnement soit unique au monde ne change rien au principe. Et si le secteur en question représente autant d'argent, il doit être possible de financer l'achat de ces données.
 
WRInaute impliqué
j'ai piqué la ferrari de mon voisin mais c'est légal parcequ'il n'y a que lui qui en a une dans ma ville :mrgreen:
 
WRInaute passionné
toto2525 a dit:
Je tiens à préciser que je suis dans un domaine d'activité bien particulier qui représente des enjeux économiques qui se chiffrent en milliards d'euros, à ma connaissance il n'y a AUCUN autre secteur d'activité qui se trouve dans le même cas de figure que nous.

les chinois du fbi ???
 
WRInaute passionné
Dans ce cas de figure:

1. Regarder clairement les conditions d'utilisations du site permises par ton abonnement
2. Les contacter pour demander le service complémentaire d'un fichier exporté des données dont tu as besoin

Ils sont nécessairement contactables.
 
WRInaute occasionnel
Le fait même que le système ait été mis en place prouve qu'ils ne VEULENT pas que ces informations soient récupérées automatiquement, et cela quel que soit l'usage que tu comptes en faire.
Si telle était la raison, alors c'est complètement stupide puisque je peux récupérer ces infos manuellement et légalement sur leur nouveau site. C'est qu'une question de méthode de récupération (automatique ou manuelle), je ne vois pas en quoi ça les dérangent ! La récupération de ces infos est périodique : tous les 15 jours ou tous les mois.

Ils sont nécessairement contactables.
J'en suis à 3 emails sans réponses de leur part :(
 
Nouveau WRInaute
Bonjour, et désolé de ressortir un topic vieux d'un an, mais je vais en avoir besoin :p.
Mon problème est le suivant, je dois parser des pages html de type http://blablabla.php?id=** .

Donc ma mission est de bouclé sur ses pages et de faire un parse classique.
Voici mon code qui fonctionne :

Code:
<?php
ini_set("max_execution_time", 0);
require_once 'simple_html_dom.php';
$id = 1;
$html = new simple_html_dom();
while($id < 500)
{
$html->load_file("http://www.arretsurimages.net/vite.php?id=$id");
$html->find('div[class=bloc-vite-gratuit-2]',0);
$html->find('a[class=typo-vite-titre]',0);
$link = $html->find('a[class=typo-vite-titre]',0);
if ($link != "")
{
   echo($link);
   echo '<br/>';
}
$id++;
}
?>

Ce code fonctionne mais pour 500 pages il me faut 5 minutes ! Ce qui est juste beaucoup trop long.
Alors je me demandais cette fonction la
Code:
$html->load_file("http://www.arretsurimages.net/vite.php?id=$id");

Elle charge tout le contenu de la page si j'ai bien compris ?
SI oui n'y à t'il pas moyen de ne récupérer que du texte, le vidéos photos ne m'étant d'aucune utilité.

Si vous avez d'autres idées pour accélérer le processus je suis preneur.
Ps : le site est un exemple dans mon code, et le site que je parserais est une base de donnée publique donc autorisé. :)

Merci de votre aide
 
WRInaute impliqué
Accélérer le code? T'es conscient que tu fais un crawler là? (enfin si j'ai bien compris...)

Pour faire 500 pages le mieux, à mes yeux, c'est optimiser le telechargement des pages donc oublis php, et commences a faire un langage du style python qui permet de faire du multi-threading ;)
 
Nouveau WRInaute
J'adore ce forum pour les réponses rapide comme ça :p
En fait j'aurais bien utilisé un autre langage mais je suis contraint d'utiliser le php par mon employeur ...
En tous il y à 2752 pages à parse pour récupérer à peine 20 caractère par page et les ajouter dans une base mysql.

Je devrais effectuer ce parse une fois par mois pour d'éventuelle mise à jour de donnée.
Au pire 10 m de parse la nuit une fois par mois sur le serveur ça devrait passer :).

Enfin je sais pas ...

Enfin la j'ai mis 5 m car il y à des vidéos, images ect.. Sur le site en question les pages sont juste composé d'un seul tableau, je devrais faire un test.
 
WRInaute impliqué
Je ne connais pas ton objet simple_html_dom() mais à priori les videos ou autres ne devraient pas etre downloadées. Tout ce qui est downloadé normalement c'est le contenu des pages. Si tu download autre chose que les pages c'est que ton crawler est mal fait et tu devrais voir à ajouter des restrictions sur les extensions ou sur les repertoires ou noms de fichiers.

Après 5 minutes ca ne m'etonne pas plus que ca. Tu as le temps de résolution dns, le temps de calcul, le temps de telechargement, le temps de calcul du parseur, et le tout n'est pas multi-threadé. Avec du multi-threading tu pourrais balancer plusieurs threads crawlers en meme temps pour optimiser. Si ton employeur te donne une contrainte au niveau du language de programmation, faut pas qu'il vienne chialer. On grave pas un cd avec un cure dent, on creuse pas une piscine avec une cuillere, etc!! Chaque outil a ses qualités et ses défauts, et php n'est pas fait pour ce genre de choses, il le fera c'est sur, mais faut pas attendre un miracle!
 
WRInaute impliqué
bin en php tu recup le timestamp en micro secondes à chaque étape et tu compares. Tu verras les etapes qui te prennent le plus de temps et tu sauras quoi optimiser. Si c'est le temps de chargement à optimiser t'es mort, la seule solution c'est de passer en multithreads.

Ou sinon aussi tu peux virer la partie calculs/parser de ton prog, comme ca il te restera plus que les temps de chargement et tu sauras si c'est vraiment ça qui coince. A coup sûr c'est ça je pense.
 
Nouveau WRInaute
Code:
<?php 
header("Content-Type: text/html; charset=utf-8");
ini_set("max_execution_time", 0);
// On appele le parser pour parcourir la page
require_once 'simple_html_dom.php';
// Connection à la base My Sql
require_once 'connecMysql.php';
mysql_query("SET NAMES UTF8"); 
// Création d'un objet dom document
$id = 1;
$html = new simple_html_dom();
// Boucle sur tout les éléments de la base extranet
while($id <= 2787)
    {
$url = "https://extranet.edqm.eu/4DLink1/4DCGI/web_view/mono/$id";
$file = @fopen($url, 'r'); 
// On test si le fichier existe ou non
if ($file)
    //Si il exite en commencer à parser la page et récupérer les données
    {
    $html->load_file($url);
    // Sur ces 5 je parcours les lignes du tableau pour me positionner sur l'élément souhaité.
    $monoNumber     =    $html->find('td', 5)->plaintext;
    $englishName    =    $html->find('td', 7)->plaintext;
    $frenchName     =    $html->find('td', 9)->plaintext;
    $latinName      =    $html->find('td', 11)->plaintext;
    $PhEurStatus    =    $html->find('td', 17)->plaintext;
    // On test si le status n'est pas plus grand que 1, cela nous permet de savoir si un texte est aussi présent.
    if(strlen($PhEurStatus) > 1 ){$PhEurDeleted = 1;} else {$PhEurDeleted = 0;}}
    else 
    // SI le fichier n'existe pas alors on ajoute une ligne vide avec l'id pour de futur modification.    
    {
    $monoNumber = $id;
    $englishName = "";
    $frenchName = "";
    $latinName = "";
    $PhEurStatus = "";
    } 
        // Ligne de test(désactivé)
        // echo $monoNumber." ".$englishName." ".$frenchName. " ".$latinName." ".$PhEurStatus."<br/>"; 
        // Requête d'ajout de nos données et gestion des doublons avec ON DUPLICATE KEY UPDATE, si un doublon
        // est détecté la requête se transforme en update.
        $query = "INSERT INTO substances(PhEurMonograph,TermName,PhEurStatus,PhEurDeleted) VALUES('$monoNumber','$frenchName','$PhEurStatus', '$PhEurDeleted')
        ON DUPLICATE KEY UPDATE PhEurMonograph=$monoNumber";
        // On execute la fonction
        $result = mysql_query($query);  
        // On ferme le fichier et livère la mémoire.
        fclose($file); 
// On incrément l'id de 1 pour changer de document.        
$id++;
}
?>

Bon ça me parait correct, j'ai tester les 2787 pages web = 40 minutes c'est chaud o_O.
Je vais voir si je peux pas encore accélérer je test le timestamp et je te dit ca ;)
 
WRInaute accro
Avant que le sujet dérape sur c'est bien c'est mal il ne me semble pas que qqun ai relevé le souci qui me semble évident
toto2525 a dit:
Sur la homepage du site à parser j'arrive à voir leur page lorsque je fais un echo "$url_fp"
normal elle est publique
toto2525 a dit:
mais lorsque je me loggue sur une autre page de leur site (avec mon login + mon mot de passe) ça ne marche plus
Parce que tu pense qu'ayant fourni un login / mdp dans ton navigateur, ton script (qui s'exécute je sais pas où) va bénéficier de ta connection ?

Pour ce genre de truc laisse tomber le file_get_content et utilise CURL. Dans les options CURL il faudra que tu introduise (a chaque fois) ton cookies pour que CURL le simule (session et tout le bataclan). Si c'est un cookies de connecté, le serveur te donnera la page. Bref il faut que ton script se comporte comme un navigateur connecté.

Mais le plus simple (vue que tu as l'air de pas mal caler sur php) c'est encore d'aller sur le site avec ton navigateur et de faire un copier coller de ce que tu veux voir d'enregistrer la page en local pour la parser. A ce sujet ce que tu appel un script de parse n'est pas une fonction de parse mais juste de capture.
 
Nouveau WRInaute
Salut zeb, je ne sais pas si tu t'adressais à moi dans ton message ou à toto, j'ai entendu parler de CURL en fessant 1000 de recherches sur Google, penses que que celui ci serait plus rapide que de load chacune des pages ?
 
WRInaute accro
en fait je parlais du script de toto et j'avoue avoir laché le fil a la seconde page lors de l'échange juridico-moral sur la présomption de pompage.

Ne comprenant pas bien ta réponse mais semblant comprendre que tu as eu du mal avec une source d'info sur curl en voici une autre qui gère le problème du cookie -http://www.developpez.net/forums/d620433/php/bibliotheques-frameworks/services-web/curl-authentification-cookie-deja-cree/
 
WRInaute impliqué
Dernière fois que je le dis : ce n'est pas une regex et un INSERT dans une bdd qui mettent 40 minutes, c'est le fait de télécharger 3000 pages qui met ce temps là. Si une page met du temps à arriver c'est parcequ'il faut faire une requête, ensuite que le serveur calcul l'affichage de la page, et ensuite que tu la réceptionne.

dans 40 minutes tu as 2400 secondes... donc en gros ca te prend 1s par page... Et y'a fort à parier que dans cette seconde, la quasi totalité du temps perdu c'est le téléchargement! Et pendant ce temps tu perds du temps parceque le processeur de ta machine ne te sert à rien, ta machine attends la page...

Bref, tout ça pour en revenir à la solution : le multithread.

---

Sinon j'ai une autre solution à te proposer. Si tu connais deja les url à telecharger (j'imagine que c'est pour mettre à jour des données qui ne t'appartiennent pas...), donc je pars du principe que t'as une bdd avec les urls. Dans ce cas il te suffit d'ajouter une date de crawl à chacune de tes urls, et de mettre une tache cron tous les quarts d'heure, qui ne va chercher qu'une seule page. Ca te permettra d'etaler tout au long du mois la mise à jour et faire en sorte que ce soit en continu. Bien sur ca ne fonctionne que si tes données changent continuellement, et non toutes en meme temps chaque mois...
 
Nouveau WRInaute
Re, j'avais bien compris que c'était le dl de la page du temps RiPSO un commit dans un bdd prend qqseconde et encore.
J'ai eu le mec au tel il ma dit que 40 m de maj ne le dérangerait pas. Donc mon soucis est plus ou moins régler.
Et même si je ne ferais pas du multithread pour mon employer je vais m'y intéresser personnellement ça à l'air bien puissant.

Il me reste à gérer plus qu'un truc que j'avais oublié ... :p mais je pense refaire un post à moins que tu sache m'envoyer la solution en live :p.
Code:
while($id <= 20)
    {
$url = "https://extranet.edqm.eu/4DLink1/4DCGI/web_view/mono/$id";
$file = @fopen($url, 'r'); 
// On test si le fichier existe ou non
if ($file)
    //Si il exite en commencer à parser la page et récupérer les données
    {
    $html->load_file($url);
    // Sur ces 5 je parcours les lignes du tableau pour me positionner sur l'élément souhaité.
    $monoNumber     =    $html->find('td', 5)->plaintext;
    $englishName    =    $html->find('td', 7)->plaintext;
    $frenchName     =    $html->find('td', 9)->plaintext;
    $latinName      =    $html->find('td', 11)->plaintext;
    $PhEurStatus    =    $html->find('td', 17)->plaintext;
    // On test si le status n'est pas plus grand que 1, cela nous permet de savoir si un texte est aussi présent.
    if(strlen($PhEurStatus) > 1 ){$PhEurDeleted = 1;} else {$PhEurDeleted = 0;}
    
    }
        // Ligne de test(désactivé)
        // echo $monoNumber." ".$englishName." ".$frenchName. " ".$latinName." ".$PhEurStatus."<br/>"; // Pour test
        // Requète d'ajout de no données et gestion des doublons avec ON DUPLICATE KEY UPDATE, si un doublon
        // est détécté la requète se transforme en update.
        $query = "INSERT INTO substances(PhEurMonograph,TermName,PhEurStatus,PhEurDeleted) VALUES('$monoNumber','$frenchName','$PhEurStatus', '$PhEurDeleted')
        ON DUPLICATE KEY UPDATE PhEurMonograph=$monoNumber";
        // On execute la fonction
        $result = mysql_query($query);  
        // On ferme le fichier et livère la mémoire.
        fclose($file); 
// On incrément l'id de 1 pour changer de document.        
$id++;
}

Dans ma boucle qui parcourt les pages j'update ma bdd en live en même temps, cependant mon employeur veut avoir une option COMMIT ou ROOLBACK en gros il veut deux boutons après les 40 minutes qui disent valider les changements ou annuler.

Je recherche donc comment faire pour faire toutes mes querys (2787) et faire un petit commit() à la fin.
Merci beaucoup pour votre aide :).
Mes cheveux sont toujours en place ! :lol:
 
Nouveau WRInaute
Doublés mes champs c'est à dire modifier la structure de ma table ? et rajouter des champs temporaire entres guillemets ?
Sinon j'avais penser à faire un tableau temporaire j'ajoute une ligne pour chaque produit, et je balance tout le tableau à la fin.
Cela rejoins en qqsorte ton idée.

Le fait de doublé les champs fonctionne, merci RiPSO ! :).
Bon j'ai fini mon script je peux retourner sur SC2 :p
 
Discussions similaires
Haut