日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
利用ChatGPT輔助處理Html數(shù)據(jù)

一、確認(rèn)功能

請編程實現(xiàn)以下功能:

目前創(chuàng)新互聯(lián)建站已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、建昌網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

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

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

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

二、通過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庫解析HTML文件,通過查找

標(biāo)簽和其中的
    <sup id="3asva"><form id="3asva"><big id="3asva"></big></form></sup>
      、標(biāo)簽來提取數(shù)據(jù)。其中,我們使用了一個headers列表來保存表格頭,使用一個rows列表來保存每一行數(shù)據(jù)。

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

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

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

      1.提升效率

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

      3.要及時保存數(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文件合并為一個文件
      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)  # 刪除臨時文件
              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為整個map添加進(jìn)度條,可以同時顯示當(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文件為一個文件
      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í)行效果:


      網(wǎng)站標(biāo)題:利用ChatGPT輔助處理Html數(shù)據(jù)
      瀏覽路徑:http://www.5511xx.com/article/djdedig.html
      • <strike id="3asva"><code id="3asva"></code></strike>
      • <fieldset id="3asva"><table id="3asva"></table></fieldset>