成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用ChatGPT輔助處理Html數(shù)據(jù)

原創(chuàng)
開發(fā)
使用chatgpt進(jìn)行輔助編程首先要清晰描述自己需求,生成代碼通過不斷調(diào)試及優(yōu)化,最終完成任務(wù)。有它,對(duì)程序員是好事也是壞事。

一、確認(rèn)功能

請(qǐng)編程實(shí)現(xiàn)以下功能:

1.所有html保存在all文件夾下。

2.對(duì)all文件下的所有html進(jìn)行處理,提取表格中的數(shù)據(jù)。

3.自動(dòng)提取表格頭,列名以逗號(hào)進(jìn)行分割。

4.處理完畢的文件輸出為out+時(shí)間格式文件,用于區(qū)別不同時(shí)間處理的文件。

二、通過chatgpt來進(jìn)行編程

圖片

源代碼如下:

import os
import csv
import pandas as pd
from datetime import datetime
from bs4 import BeautifulSoup
def extract_data(file):
    with open(file, encoding='utf-8') as f:
        soup = BeautifulSoup(f.read(), 'html.parser')
        table = soup.find('table')
        if not headers:
            ths = table.find_all('th')
            headers.extend([th.text.strip().replace('\n', '') for th in ths])
        for tr in table.find_all('tr')[1:]:
            tds = tr.find_all(['th', 'td'])
            row = []
            for td in tds:
                text = td.text.strip().replace('\n', '').replace(',', ';')
                row.append(text)
            if len(row) == len(headers):
                rows.append(row)
def write_data(output_file):
    with open(output_file, 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(headers)
        writer.writerows(rows)
file_dir = 'all'
html_files = [os.path.join(file_dir, f) for f in os.listdir(file_dir) if f.endswith('.html')]
headers = []
rows = []
for file in html_files:
    extract_data(file)
output_file = f"out_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}.csv"
write_data(output_file)
print(f'Data has been saved to {output_file}')

chatgpt給出的解釋:

具體地,我們使用BeautifulSoup庫(kù)解析HTML文件,通過查找<table>標(biāo)簽和其中的<th><td>標(biāo)簽來提取數(shù)據(jù)。其中,我們使用了一個(gè)headers列表來保存表格頭,使用一個(gè)rows列表來保存每一行數(shù)據(jù)。

在處理每個(gè)HTML文件時(shí),我們首先查找表格頭,并將其添加到headers列表中。隨后,我們依次遍歷表格的每一行,并將其中的數(shù)據(jù)添加到rows列表中,保證了處理結(jié)果的準(zhǔn)確性。對(duì)于每一行數(shù)據(jù),我們判斷其長(zhǎng)度是否與headers列表相等,如果不相等則說明該行數(shù)據(jù)有誤,我們就不予以保存。最終,我們將所有數(shù)據(jù)保存到一個(gè)CSV文件中,輸出文件名為out+當(dāng)前時(shí)間.csv,用于區(qū)別不同時(shí)間處理的文件。

這樣,我相信這份代碼能夠滿足您的需求。如有任何問題,請(qǐng)隨時(shí)和我聯(lián)系。

三、繼續(xù)優(yōu)化

1.提升效率

2.提供進(jìn)度條顯示

3.要及時(shí)保存數(shù)據(jù),處理意外情況發(fā)生

最終代碼如下:

import os
import csv
import pandas as pd
from datetime import datetime
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm
def extract_data(file):
    with open(file, encoding='utf-8') as f:
        soup = BeautifulSoup(f.read(), 'html.parser')
        table = soup.find('table')
        if not headers:
            ths = table.find_all('th')
            headers.extend([th.text.strip().replace('\n', '') for th in ths])
        for tr in table.find_all('tr')[1:]:
            tds = tr.find_all(['th', 'td'])
            row = []
            for td in tds:
                text = td.text.strip().replace('\n', '').replace(',', ';')
                row.append(text)
            if len(row) == len(headers):
                rows.append(row)
                # 每處理1000行數(shù)據(jù),就保存當(dāng)前數(shù)據(jù)
                if len(rows) % 1000 == 0:
                    output_file = f"out_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}_{len(files)}.csv"
                    write_data(output_file)
                    files.append(output_file)
                    rows.clear()
# 將所有CSV文件合并為一個(gè)文件
def combine_files(output_file):
    with open(output_file, 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(headers)
        for file in files:
            with open(file, 'r', encoding='utf-8') as f2:
                reader = csv.reader(f2)
                next(reader)  # 跳過文件頭
                for row in reader:
                    writer.writerow(row)
            os.remove(file)  # 刪除臨時(shí)文件
        print('All files have been combined into one CSV file.')
def write_data(output_file):
    with open(output_file, 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(headers)
        writer.writerows(rows)
file_dir = 'all'
html_files = [os.path.join(file_dir, f) for f in os.listdir(file_dir) if f.endswith('.html')]
headers = []
rows = []
files = []
with ThreadPoolExecutor(max_workers=4) as executor:
    # 使用tqdm為整個(gè)map添加進(jìn)度條,可以同時(shí)顯示當(dāng)前文件和整體進(jìn)度
    for _ in tqdm(executor.map(extract_data, html_files), total=len(html_files), desc='Extracting data'):
        pass
# 處理剩余數(shù)據(jù),并保存到CSV文件中
if rows:
    output_file = f"out_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}_{len(files)}.csv"
    write_data(output_file)
    files.append(output_file)
# 合并所有CSV文件為一個(gè)文件
output_file = f"out_{datetime.now().strftime('%Y-%m-%d_%H%M%S')}.csv"
combine_files(output_file)
print(f'Data has been saved to {output_file}')

執(zhí)行效果:

圖片

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2023-05-05 19:29:41

2023-03-20 15:44:00

科研AI

2023-09-06 08:00:00

ChatGPT數(shù)據(jù)分析

2022-12-12 12:04:59

ChatGPT代碼軟件

2023-05-05 22:10:05

2023-10-10 09:08:50

2016-11-16 18:49:21

2012-12-06 10:59:51

大數(shù)據(jù)

2023-04-04 22:28:43

2023-12-13 09:00:00

2020-10-29 06:02:44

PythonPandasExcel

2023-11-01 06:56:56

2023-03-07 16:43:17

ChatGPT軟件人工智能

2023-03-13 22:23:30

2025-02-26 11:25:26

2023-07-04 20:15:00

2023-02-01 08:07:39

HTMLChatGPT互聯(lián)網(wǎng)

2012-05-18 10:49:36

SAP大數(shù)據(jù)HANA

2012-07-18 11:37:59

ibmdw

2016-02-17 09:55:25

SMACK數(shù)據(jù)處理可擴(kuò)展架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一级片在线观看视频 | 亚洲日韩欧美一区二区在线 | 国产精品永久免费视频 | 九九色九九 | 亚洲一区二区三区免费在线 | 精品少妇一区二区三区日产乱码 | 综合久久综合久久 | 四虎在线播放 | 999视频在线播放 | 国产伦精品一区二区三区视频金莲 | 久久精品亚洲 | 亚洲国产精品一区二区www | 性在线 | 免费观看国产视频在线 | 亚洲高清在线 | 久久久www成人免费无遮挡大片 | 欧美日韩中文字幕在线播放 | 黄色免费三级 | 四虎永久免费黄色影片 | 日韩资源 | 二区高清 | 日本久久精品 | www.嫩草 | 欧美日韩在线免费观看 | 亚洲国产精久久久久久久 | 91精品国产综合久久久久久丝袜 | 日本精品一区二区在线观看 | 日韩精品一区二区三区 | 国产999精品久久久久久绿帽 | 一区二区av| 成人免费精品视频 | 国产精品99久久久久久动医院 | 中文字幕不卡在线观看 | 亚洲精品一 | 日韩在线 | 综合久久亚洲 | 亚洲一区二区在线 | 亚洲三区在线观看 | 久久免费视频1 | 99久久精品国产一区二区三区 | 天天夜碰日日摸日日澡 |