1 pièce(s) jointe(s)
Boucle pour recherche à partir d'une liste urls dans un excel
Bonjour à tous !
Je suis nouveau sur ce forum et j'ai commencé python il y a quelques jours en vu de faire un agrégateur personnel sur excel de notes jeux vidéos et cinéma.
Pour me faire la main je teste sur le site SensCritique.com
À partir d'un premier programme j'ai récupéré tous les noms de jeux de borne d'arcade ainsi que leur lien href, pour par la suite récupérer d'autres informations et c'est là que je bloque.
Voilà déjà ce que ça donne sur excel : Pièce jointe 604761
Voici comment se présente le site.
Je fais ma recherche qui me présente les différents jeux :
Jeu01 <lien href01>
Jeu02 <lien href02>
Jeu03 <lien href03>
...
Et en atteignant la page du lien je veux récupérer la note ainsi que le nombre de votants.
Pour un jeu isolé c'est facile.
En revanche ce que je n'arrive pas à faire c'est une boucle pour dire à mon programme :
- Va dans le href du jeu 01 et récupère telles informations.
- Ensuite tu fais pareil avec le href du jeu 02.
- Ensuite tu fais pareil avec le href du jeu 03.
- Et ainsi de suite jusqu'au jeu 2153.
J'utilise xlwings car je modifie en parallèle en live mon excel et je le met à jour ensuite via python. J'aime faire des aller-retour entre les deux.
Voilà ce que donne le programme actuellement fonctionnel pour un jeu. Donc sans boucle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #-----STEP_01---------------------------------------------------Librairies.
import requests
from bs4 import BeautifulSoup
import xlwings as xw
wb = xw.Book('E:\Pythons\Arcade [SC].xlsx')
ws1 = wb.sheets['Tab1']
#-----STEP_02---------------------------------------------------URLs et nombre de jeux.
urls = ws1.range('D2:D2154').value
#---------------#
# Arcade #
#---------------#
nbJeux = 2153
index = 0
page = requests.get(urls[index]) #Requête
soup=BeautifulSoup(page.text, "html.parser") #Contenu
listScore = soup.findAll('span', class_="pvi-scrating-value")
listVotants = soup.findAll('b', class_="pvi-stats-number d-link-reverse")
score=listScore[0]
votants=listVotants[0]
news_score=[]
for s in listScore:
news_s={}
news_s=s.text
news_score.append(news_s)
news_votants=[]
for v in listVotants:
news_v={}
news_v=v.text
news_votants.append(news_v)
ws1.range('F2:F5').value = news_s
ws1.range('G2:G5').value = news_v |
Merci à tous par avance pour votre éclairage car là je commence à être un peu pommé.
Bien sûr j'ai déjà testé pas mal de choses avant de faire ce post en fouillant sur le net mais je dois raté quelque chose.