Scraper certaines données d'un site ?

Fermé
Yoloswagger Messages postés 3 Date d'inscription mardi 20 février 2018 Statut Membre Dernière intervention 23 février 2018 - Modifié le 20 févr. 2018 à 13:33
 Utilisateur anonyme - 23 févr. 2018 à 14:14
Bonjour,

Je travail actuellement sur un bot Discord en python (RED-DiscordBot) et je veut faire une commande pour pouvoir afficher certaines données a partir d'un site web.

voici le code que j'ai actuellement pour récupérer l'url donné :
@commands.command()
async def rscp(self, num : int):
    """Regarder des articles SCP!"""
    if (num > 0 and num <= 3999):

        actor_url = "http://www.fondationscp.wikidot.com/scp-{:03}".format(num)

    await self.bot.say(actor_url)

Alors dans le code que j'ai actuellement comme commande j'ai /rscp avec la quel je rajoute un numero pour pouvoir avoir le lien de la page cible mais le problème ce pose ici....
Le site de la fondationscp n'a aucun id et les page n'ont pas tous le même arrangement...
Certaines page ont une image alors que d'autre n'en n'ont pas...


Ce que j'aurait aimé Scraper dans cette page (pour l'exemple je prend http://fondationscp.wikidot.com/scp-005 ) j'aurait aimé récupérer les ligne suivante : 'Classe : Sur' et 'Objet # : SCP-005' ainsi que le début de la description sauf que viens mon problème c'est que j'aimerai que ce soit possible pour toutes les page du site (4000) sans pour autant écrire 4000 fois le code... (seulement 4000 normal je ne compte pas les autre mode...)

Merci d'avance pour votre aide.

Cordialement

Yoloswagger

A voir également:

1 réponse

Utilisateur anonyme
21 févr. 2018 à 19:27
Dans un premier temps, il faut vérifier que le site ne dispose d'un flux RSS ou d'une API pour récupérer des données. Ici, ce n'est pas le cas (c'est la manière la plus propre de le faire).

Les informations que tu recherches se trouvent dans le code source de la page (pas AJAX). Tu peux donc utiliser tout simplement la bibliothèque urllib.request pour demander à une URL de te renvoyer son code source. Ensuite, à toi d'utiliser la bibliothèque "re" pour appliquer des recherches par expression régulière sur ce texte et enfin récupérer les informations dont tu as besoin (tu peux utiliser autre chose que "re").

Tu ne vas pas directement récupérer toutes les infos que tu veux.
Etape 1 : récupérer l'ensemble des liens du site : http://fondationscp.wikidot.com/liste-francaise (si possible ceux qui correspondent à la liste).
Etape 2 : pour chaque URL, chercher la valeur dans le code source de Classe et Objet.
Etape 3 : stocker ces informations dans une structure pour ensuite les utiliser ailleurs.
0
Yoloswagger Messages postés 3 Date d'inscription mardi 20 février 2018 Statut Membre Dernière intervention 23 février 2018
Modifié le 23 févr. 2018 à 13:06
Pour l'étape 1 le principal problème que j'ai c'est qu'il n'y a pas que cette page que j'ai besoin :/

j'aimerais pouvoir récupérer les information sur les différente page que compose ces page la :
http://fondationscp.wikidot.com/liste-francaise
http://fondationscp.wikidot.com/scp-series
http://fondationscp.wikidot.com/scp-series-2
http://fondationscp.wikidot.com/scp-series-3
http://fondationscp.wikidot.com/scp-series-4
http://fondationscp.wikidot.com/scp-series-5
http://fondationscp.wikidot.com/joke-scps
http://fondationscp.wikidot.com/scp-ex
http://fondationscp.wikidot.com/archived-scps


ce qui fait au total 4530 pages différentes...

par manque de temps je ne peut pas vraiment récupérer pour chaque URL la valeur dans le code source.

Toutes les page ont la même structure (a quelque exception pour le RP du site...)
0
Utilisateur anonyme
23 févr. 2018 à 12:57
Tu stockes les URL que tu viens de me citer dans un tableau et pour chaque URL, réaliser les différentes étapes que j'ai cité.
0
Yoloswagger Messages postés 3 Date d'inscription mardi 20 février 2018 Statut Membre Dernière intervention 23 février 2018
Modifié le 23 févr. 2018 à 13:14
donc je doit dans un tableau récupérer chaque information de la page :
http://fondationscp.wikidot.com/scp-001
a (entre les deux il y a 3999 url)
http://fondationscp.wikidot.com/taboo
puis passer a une autre page ?
0
Utilisateur anonyme
23 févr. 2018 à 14:14
Oui dans un premier temps, récupère toutes les URL dans chaque page que tu m'a cité dans un tableau. Quand tu auras ce bout de code vérifie la longueur de ton tableau qui devrait être vraiment grande.
0