Ligne Python (modif)

Résolu
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. Modérateur
    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
    1. 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