轉換。 html日誌與巢狀表到。 csv文件
P粉190883225
P粉190883225 2023-08-01 11:12:35
0
1
428
<p>我試著轉換一個。 html文件,其中包含表格形式的日誌,它有嵌套的表。我正在將其轉換為。 csv文件。其中一列有錯誤報告,並在該列中作為新表。我想把整個表格轉換成純文字。試著在python中使用beautifulsoup來實現這一點,但還沒有運氣。嵌套表中的資料分散到父表的所有列中,而不固定在原始列中。有什麼我能做的嗎?<br /><br />使用python與beautifulsoup庫沒有給出所需的輸出</p><p><br /></ p>
P粉190883225
P粉190883225

全部回覆(1)
P粉662614213

將帶有巢狀表的HTML檔案轉換為CSV,同時保留結構可能有點困難。 BeautifulSoup是解析HTML的一個很好的函式庫,但它可能需要額外的操作才能正確處理巢狀表。

為了獲得所需的輸出,可以使用BeautifulSoup和一些自訂Python程式碼來解析HTML、提取資料並將其正確組織為CSV格式。這裡有一個循序漸進的方法來幫助你實現這個目標:

使用BeautifulSoup解析HTML檔。


  1. 找到父表並提取其標題。
  2. 尋找父表中的所有行。
  3. 對於每一行,在相關列中找到巢狀表(如果存在)。
  4. 從巢狀表中提取數據,並將其附加到父表中的相應單元格中。

下面是一段Python程式碼片段來幫助你入門:

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)

This code assumes that your nested table data is comma-separated. If it's not, you may need to adjust the separator accordingly. Additionally, consider other delimiters if your sested table contains thatother delimiters#if your nested table contains that#. complex HTML structures may require further adjustments to this code, depending on the specifics of your data. Nonetheless, this should serve as a good starting point to tackle the task.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!