Ligne Python (modif)

Résolu
claude4777 Messages postés 29 Statut Membre -  
claude4777 Messages postés 29 Statut Membre -
Bonjour,

J'ai un programme qui récupère toutes les lignes d'un site web. Je voudrais que les 100 premières lignes de ce fichier (le fichier a environ 1000 lignes, je ne voudrais récupérer que les 100 plus récentes, donc en haut du fichier)

soup = BeautifulSoup(page.text, 'html.parser')
body = soup.find('table')
tiro_line = body.find_all('tr')


Comment modifier cette ligne?
Merci

Bonne soirée

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    Tu peux utiliser l'opérateur
    [i:j]
    qui extrait d'un itérable les éléments de
    i
    inclu à
    j
    exclu.
    • Lorsque
      i
      est omis il vaut
      0
      (
      [:j]
      extrait donc les
      j
      premiers éléments) ;
    • Lorsque
      j
      est omis il vaut
      None
      (
      [i:]
      extrait donc tous éléments à partir de l'index
      i
      inclu)


    fichier.html

    <html>
        <body>
            <table>
                <tr><td>1</td></tr>
                <tr><td>2</td></tr>
                <tr><td>3</td></tr>
                <tr><td>4</td></tr>
                <tr><td>5</td></tr>
                <tr><td>6</td></tr>
            </table>
        </body>
    </html>


    script.py

    #!/usr/bin/env python3
    
    import sys
    from bs4 import BeautifulSoup
    
    filename = sys.argv[1]
    with open(filename) as f:
        soup = BeautifulSoup(f, "html.parser")
        table = soup.find("table")
        rows = table.find_all("tr")
        print(rows[:3])


    Exécution

    (mando@silk) (~) $ chmod a+x script.py
    (mando@silk) (~) $ ./script.py fichier.html
    [<tr><td>1</td></tr>, <tr><td>2</td></tr>, <tr><td>3</td></tr>]


    Bonne chance
    0
  2. claude4777 Messages postés 29 Statut Membre
     
    Bonjour et merci.

    J'ai un problème avec tiro_line qui a été remplacé dans votre méthode par Rows=....

    car la ligne suivante du programme Python est:

    for value in tiro_line:
    etc..

    qui alors n'existe plus car remplacé par

    rows = table.find_all("tr")
    print(rows[:3])...

    Merci et bonne soirée
    0