IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

script python Web scrapping


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut script python Web scrapping
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    import requests as rq
    from bs4 import BeautifulSoup
    import pandas as pd
    from random import randint
    from time import sleep
     
    headers = ({'User-Agent':
                'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})
     
    def initial_scrape(url): # scrapes initial page - used to find number of pages
        r = rq.get(url, headers=headers)
        soup = BeautifulSoup(r.text, 'html.parser')
        return soup
     
     
    def find_pages(soup): # finds total number of pages
        pages_html = soup.select('.page-link')
        totalPages = pages_html[-4].get_text()
        return totalPages
     
     
    def convertUnit(price): # converts price format from string to integer e.g. 100K -> 100000
        if 'K' in price:
            price = price.partition('K')[0]
            return int(float(price) * 1000)
        elif 'M' in price:
            price = price.partition('M')[0]
            return int((float(price) * 1000000))
        else:
            return int(price)
     
    def gather_data(totalPages): # gathers the data of each player from each page
     
        database = []
        playerContainers = []
        pageCounter = 0
        totalCounter = 0
     
        for page in range(int(totalPages)): # for every page
            url = f'https://www.futbin.com/players?page=1&xbox_price=10000-50000&version=if_gold' # change url accordingly
            r = rq.get(url, headers=headers)
            soup = BeautifulSoup(r.text, 'html.parser')
     
            playerContainers = soup.select('tbody > tr')[2:] 
     
            counter = 0
     
            for player in playerContainers: # for every player
     
                stats = {} # adds stats to a dictionary (one for each player), which is then added to a list
     
                values = player.select('.num_td')
                name_position = player.select('.player_name_players_table')
     
                stats['name'] = name_position[0].get_text().partition('(')[0].strip()
                stats['position'] = name_position[0].get_text().partition('(')[2].strip(')')
                stats['rating'] = int(player.select('span[class*="form rating"]')[0].get_text())
                stats['price'] = convertUnit(player.select('.ps4_color')[0].get_text())
     
     
                database.append(stats)
     
                counter += 1
                print(f'Player: {counter}/{len(playerContainers)} ; {stats["name"]}') # tracks progress
     
            totalCounter += counter
            pageCounter += 1
            print(f'Page: {pageCounter}/{totalPages}') # more progress tracking
            sleep(randint(1, 3)) # timeout - can be removed
     
        return database
    Bonjour, je suis débutant en python et je cherche a comprendre pourquoi le script voit le nombre de page du site web mais ne scrap seulement que la première. je ne cherche pas une réponse toute faite plus de l'aiguillage pour comprendre ou se situe le problème

    merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    url = f'https://www.futbin.com/players?page=1&xbox_price=10000-50000&version=if_gold' # change url accordingly
    je pense qui vous avez oublier de change le paramètre page

    Vous devriez faire une fonction qui retourne une soup en fonction de l'url, c'est toujours pratique quand on fait du parsing.
    Sinon votre scraping est un peu brouillon mais c'est normal au début avec bs4

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    Citation Envoyé par flapili Voir le message
    Vous devriez faire une fonction qui retourne une soup en fonction de l'url
    Je comprends pas bien la signification


    Pour ce qui est des paramètres des pages l'url correspond a la première du scrap et la seule du coup puisque il ne va pas plus loin qu'en me donnant les résultats de toutes les pages identique à la première

  4. #4
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Je comprends pas bien la signification
    faire une fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def get_soup(url):
    # code ...
    return soup
    ps: sinon les headers doivent être sous forme de dictionnaire avec requests, on préféra donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
    }
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    headers = ({'User-Agent':
                'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    Ah d'accord, je vois mieux merci d'avoir pris le temps de répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution d'un script python à l'aide d'une page web
    Par ameunie dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2016, 13h05
  2. Intégrer script python sur ma page web
    Par titoum76 dans le forum Déploiement/Installation
    Réponses: 3
    Dernier message: 24/11/2011, 15h13
  3. Script Python sur serveur web
    Par Freyskeyd dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 04/01/2011, 00h40
  4. Afficher les réponses d'un script python sur un page web
    Par Gregzz dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 06/08/2010, 12h48
  5. Intégrer un script python dans une page Web
    Par Mysti¢ dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 02/11/2006, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo