recherche

Maison  >  Questions et réponses  >  le corps du texte

Convertir. journal HTML avec des tables imbriquées. fichier csv

<p>J'essaie d'en convertir un. fichier HTML contenant les journaux sous forme de tableau, comportant des tableaux imbriqués. Je le convertis en . fichier csv. Il y a un rapport d'erreur dans l'une des colonnes et un nouveau tableau dans cette colonne. Je souhaite convertir le tableau entier en texte brut. J'ai essayé d'utiliser beautifulsoup en python pour y parvenir, mais pas encore de chance. Les données d'une table imbriquée sont réparties sur toutes les colonnes de la table parent, plutôt que d'être fixées dans les colonnes d'origine. Puis-je faire quelque chose ?<br /><br />Utiliser Python avec la bibliothèque beautifulsoup ne donne pas le résultat souhaité</p><p><br /></ p>
P粉190883225P粉190883225514 Il y a quelques jours532

répondre à tous(1)je répondrai

  • P粉662614213

    P粉6626142132023-08-02 10:42:21

    Convertir des fichiers HTML avec des tableaux imbriqués en CSV tout en préservant la structure peut être un peu difficile. BeautifulSoup est une excellente bibliothèque pour analyser le HTML, mais elle peut nécessiter des opérations supplémentaires pour gérer correctement les tableaux imbriqués.

    Pour obtenir le résultat souhaité, BeautifulSoup peut être utilisé avec du code Python personnalisé pour analyser le HTML, extraire les données et les organiser correctement au format CSV. Voici une méthode étape par étape pour vous aider à y parvenir :

    Utilisez BeautifulSoup pour analyser les fichiers HTML.


    1. Trouvez la table parent et extrayez son en-tête.
    2. Trouvez toutes les lignes de la table parent.
    3. Pour chaque ligne, recherchez le tableau imbriqué dans la colonne concernée (si elle existe).
    4. Extrayez les données d'un tableau imbriqué et ajoutez-les aux cellules correspondantes de la table parent.

    Voici un extrait de code Python pour vous aider à démarrer :

    from bs4 import BeautifulSoup
    import csv
    
    def extract_nested_table_data(table_cell):
        # Helper function to extract the data from a nested table cell
        nested_table = table_cell.find('table')
        if not nested_table:
            return ''
    
        # Process the nested table and extract its data as plain text
        nested_rows = nested_table.find_all('tr')
        nested_data = []
        for row in nested_rows:
            nested_cells = row.find_all(['td', 'th'])
            nested_data.append([cell.get_text(strip=True) for cell in nested_cells])
        
        # Convert nested_data to a formatted plain text representation
        nested_text = '\n'.join(','.join(row) for row in nested_data)
        return nested_text
    
    def convert_html_to_csv(html_filename, csv_filename):
        with open(html_filename, 'r', encoding='utf-8') as html_file:
            soup = BeautifulSoup(html_file, 'html.parser')
    
            parent_table = soup.find('table')
            headers = [header.get_text(strip=True) for header in parent_table.find_all('th')]
    
            with open(csv_filename, 'w', newline='', encoding='utf-8') as csv_file:
                csv_writer = csv.writer(csv_file)
                csv_writer.writerow(headers)
    
                rows = parent_table.find_all('tr')
                for row in rows[1:]:  # Skipping the header row
                    cells = row.find_all(['td', 'th'])
                    row_data = [cell.get_text(strip=True) for cell in cells]
    
                    # Extract data from nested table (if it exists) and append to the row
                    for idx, cell in enumerate(cells):
                        nested_data = extract_nested_table_data(cell)
                        row_data[idx] += nested_data
    
                    csv_writer.writerow(row_data)
    
    if __name__ == '__main__':
        html_filename = 'input.html'
        csv_filename = 'output.csv'
        convert_html_to_csv(html_filename, csv_filename)

    Ce code suppose que les données de votre tableau imbriqué sont séparées par des virgules. Si ce n'est pas le cas, vous devrez peut-être ajuster le séparateur en conséquence. De plus, envisagez d'autres délimiteurs si votre tableau imbriqué contient des virgules.

    N'oubliez pas que la gestion de structures HTML complexes peut nécessiter davantage. ajustements de ce code, en fonction des spécificités de vos données, cela devrait néanmoins constituer un bon point de départ pour aborder la tâche.


    .

    répondre
    0
  • Annulerrépondre