Ligne Python (modif)

Résolu/Fermé
claude4777 Messages postés 21 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 16 avril 2023 - Modifié le 13 janv. 2022 à 17:19
claude4777 Messages postés 21 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 16 avril 2023 - 13 janv. 2022 à 18:07
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
A voir également:

2 réponses

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
Modifié le 13 janv. 2022 à 17:31
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
claude4777 Messages postés 21 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 16 avril 2023
13 janv. 2022 à 18:07
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