Récupérer contenu d'une page dans une base de données

Signaler
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
-
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
-
Bonjour à tous,

D'abord, merci d'être là pour essayer de m'aider !

J'explique mon problème : j'ai un site internet qui m'affiche des informations, que je dois copier-coller à chaque fois dans un tableau Excel, puis revenir sur le site, accéder à la page suivante, et ensuite répéter l'opération.

Cela prend énormément de temps, et je me demandais si il n'y avait pas un simple moyen de récupérer le contenu d'une page (pour ensuite l'exporter dans une base de données/un fichier texte, mais j'arrive à faire cette partie tout seul par la suite).

J'ai déjà crée une page avec une iframe pour afficher le site qui contient les informations, tout fonctionne bien, je peux afficher les informations du site externe sur la page de mon site.

J'ai aussi pu trouver quelques exemples que j'ai adapté, mais ils ne fonctionnent pas très bien...

<html>
<head>
</head>
<body>
<center>
<button onclick="myFunction()">Sauvegarder</button>
<iframe id="iframe_id"
    title="Inline Frame Example"
    width="100%"
    height="90%"
    src="https://site-externe.com/">
</iframe>
<p id="p1">VIDE</p>
</center>
<script>
function myFunction(){
  document.getElementById("p1").innerHTML = document.getElementById("iframe_id").contentWindow.document.body.innerHTML;
}
</script>
</body>
</html>


Merci d'avance pour votre aide !

PS : J'ai choisi la catégorie PHP, car j'aimerais aussi avoir un tout petit peu d'aide pour adapter cela et récupérer le contenu dans PHP, pour que je puisse ensuite le traiter comme je le souhaite.

6 réponses

Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021
880
bonjour,
je ne comprends pas bien en quoi ta page html va t'aider à récupérer, via php, des données à exporter.
pourquoi as-tu choisi PHP? peux-tu décrire ton environnement?
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8
Bonjour,

Merci beaucoup pour cette réponse,

En fait, j'ai un petit serveur web sur lequel j'héberge quelques pages (pas de vrais sites, juste des petits tests, bricolages etc). J'ai accès par contre à un autre vrai site (un truc officiel quoi), qui affiche des informations sur des pages html, exemple :
<h1>Titre page numero 123</h1>
<div>
<p>Première info:</p>
<p>Blablabla</p>
</div>


Et ce site contient des centaines de pages (je sais pas exactement, mais enfin c'est pour dire que c'est quasi impossible à la main)

Du coup, j'aimerais pouvoir cliquer sur les différentes pages du site, et ensuite avoir quelque chose qui tourne de mon coté (pas forcément sur mon ordinateur, ca peut, et c'est ce que je trouvais le plus simple, une page que j'héberge sur mon serveur, contenant une iframe et un petit script pour pouvoir récupérer le contenu de ce qui est affiché dans l'iframe).

Le problème c'est que mes différents essais n'ont pas fonctionné, et que je suis un peu perdu au niveau de la récupération du code du serveur distant.

Merci d'avance pour cette aide
Messages postés
33134
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juillet 2021
3 636
Bonjour,

Pour récupérer des données de pages externes, tu peux te tourner vers la fonction php file_getcontents
ou vers du Curl.

Mais avant tout .. pour pomper du contenu qui n'est pas à toi.. tu dois en demander l'autorisation au propriétaire du site...

Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8
Merci beaucoup pour cette réponse ultra rapide :)

En fait, le problème avec Curl par exemple, c'est qu'on spécifie bien une url exacte pointant vers le contenu, et le problème sur le site externe est qu'il faut se connecter...

De plus, la programmation du site distant est très étrange, puisque l'url ne change pas tout au long de la visite du site, c'est a dire que l'url est la même pour chaque page du site, c'est juste qu'autre chose est affiché

Merci pour cette aide

Edit : Pas de soucis, j'ai déjà contacté le propriétaire du site, il est d'accord pour que j'utilise un moyen pour récupérer ces informations sans que ca perturbe son site, et n'a pas pu me les donner directement (car il ne maitrise pas trop les bases de données, et que ce n'est pas lui qui a crée le site, il en est juste le propriétaire). Il m'a indiqué quelques autres contraintes comme par exemple quelques pages (en me donnant le titre exact), qu'il ne souhaite pas que je télécharge, du coup ce que je pense faire est directement les supprimer ou ne pas les enregistrer avec le traitement à la fin par PHP
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021
880
Tu as écrit que tu avais, sur ton site, une page avec une iframe pour afficher le site qui contient les informations, et qu'elle affichait les informations du site externe.
Pourquoi, alors, ne pas utiliser curl pour récupérer les données de cette page?
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8
En fait mon iframe affiche le site externe directement, mais je n'arrive pas vraiment à récupérer le code source automatiquement de cette iframe, pour ensuite le transmettre à Php pour que je puisse le traiter comme il faut.
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8 >
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021

Ma page fait actuellement : Affichage de l'iframe
Ce que je dois faire manuellement : Me connecter au site distant à travers l'iframe de mon site
Ce que je souhaiterais effectuer automatiquement : Ajouter un "petit" script sur ma page, pour qu'il puisse récupérer le code source de ce qui est affiché dans l'iframe
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021
880 >
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021

Ton site envoie le contenu html d'une page à ton navigateur.
Il n'est ensuite plus impliqué dans la communication entre le navigateur et le site distant.
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8 >
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021

Y aurait-il un moyen simple (ou sinon passer par un logiciel externe), de récupérer simplement le site qui est affiché à l'écran (comme une capture d'écran) mais où je puisse copier-coller du texte alors ?
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021
880 >
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021

Les navigateurs permettent de récupérer la source de la page. Certains navigateurs font cela via ctrl-U.
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8 >
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021

J'avais aussi pensé que le code source de la page (avec le clic droit de Chrome) permettait de voir le contenu de la page, mais en fait cela ne fonctionne pas, je peux juste voir le contenu avec l'inspecteur.
Après quelques autres recherches, j'ai trouvé quelque chose qui s'appelle ViolentMonkey, et qui est utilisé pour executer un script utilisateur sur une page affichée à l'écran. (Souvent utilisé pour télécharger des vidéos YouTube, en ajoutant simplement un bouton directement sur la page youtube dans le navigateur, comme si le bouton existait "normalement").
Serait-il possible d'utiliser quelque chose comme ça pour sauvegarder le contenu d'une page vers un fichier txt ou html ou autre (pas le code source, mais ce qui est affiché dans l'inspecteur) ?
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8
Ah hum je crois que mon dernier message a été supprimé, mais en fait je crois que je suis sur une piste (qui dérive un peu de la question originale).
En copiant-collant la page dans word, j'arrive simplement à récupérer toutes les informations nécessaires. Par contre, j'aimerais maintenant adapter cette partie de document word en informations pour Php.
En fait, j'avais pensé copier coller ensuite le document word dans un simple formulaire Html pour qu'ensuite Php puisse traiter les informations de ce formulaire, en séparant par ligne/caractère et informations (je pense que j'arriverai à trouver les fonctions nécessaires que je ne connais pas par coeur dans la documentation de php, et en faisant des simples recherches sur ce bon vieux Google)
Le seul problème qui reste, c'est traiter une partie du copié-collé, qui elle contient une image et des couleurs de texte, ce que les formulaires html ne supportent pas par défaut.
Je vais faire quelques recherches, mais si jamais quelqu'un a une idée/une piste, je suis preneur !
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021
880
pourquoi ne copies-tu pas la source html dans le formulaire?
Messages postés
65
Date d'inscription
dimanche 23 juillet 2017
Statut
Membre
Dernière intervention
25 juillet 2021
8 >
Messages postés
16441
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juillet 2021

En fait, en bricolant quelques heures, j'ai réussi à faire un petit script (très mal rédigé, pas très propre et pas optimisé, mais qui fonctionne très rapidement, et sans aucun problème, ce qui me convient parfaitement).
Il arrive a récupérer automatiquement les données que j'ai copié-collé dans word, puis ensuite dans un .txt pour que php puisse facilement le traiter.

La solution la plus simple (à mon gout) est de copier-coller l'intégralité de la page affichée (CTRL + A et CTRL + C) dans word (a la suite une page de l'autre, sans mise en forme précise), puis ensuite copier coller le word dans un .txt, puis l'uploader vers le serveur (pour l'instant manuellement, mais dans le futur très proche je ferais un petit formulaire tout simple).

Ensuite, Php traite le fichier .txt, ajoute les infos dans la BDD, et tout marche parfaitement.

Le seul petit problème restant est qu'il manque une toute petite partie des infos (lors de la conversion de word en txt) : les images + les couleurs de texte. Pour l'instant je les ajoute manuellement (la plus grande partie du travail étant faite par Php, c'est à peu près faisable de faire le reste manuellement), même si ce serait top de pouvoir le faire de manière totalement automatisée.

Une idée pour transférer des couleurs de textes dans word en infos utilisables dans le .txt ? Comme par exemple entourer les caractères en couleur par des genres de balises, exemple : (ne pouvant pas écrire en couleur, ce qui est souligné représente la couleur)

Mon texte avec une partie verte --> Mon texte avec une partie <couleur_vert>verte</couleur_vert>

Pareil pour les images, comme elles viennent d'une url, serait il possible de coller l'url de l'image dans le .txt ?

Merci d'avance pour toute cette aide :)