New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

  python大數據特訓班第二版

鍾


更新時間:2021/12/16 上午 09:49:23

 

第16.3.1查詢鄉鎮市去天氣預報

依據本書範例提供的第44行,執行出現錯誤,找不到table

●原始碼:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import os

# 檢查是否有鄉鎮市區代碼檔
if not os.path.isfile('district.csv'):
    df = pd.read_excel('https://www.stat.gov.tw/public/Attachment/712693030RPKUP4RX.xlsx', header=3)
    df.drop(columns=['縣市代碼', '村里代碼', '村里名稱', '村里代碼', '村里代碼.1'], axis=1, inplace=True)
    df.drop_duplicates(inplace=True)
    df.to_csv('district.csv', encoding='big5', index=False)


dftown = pd.read_csv('district.csv', encoding='big5')  #區鄉鎮名稱代碼資料
town = input('請輸入查詢的鄉鎮市區名稱:')  #要查詢的區鄉鎮名稱
dfs = dftown[(dftown['縣市名稱']==town[:3]) & (dftown['區鄉鎮名稱']==town[3:])]
if len(dfs) > 0:  #區鄉鎮名稱存在
    town_no = str(dfs.iloc[0,1])
    url = 'https://www.cwb.gov.tw/V8/C/W/Town/MOD/3hr/' + town_no + '_3hr_PC.html'  #三日預報網頁
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'lxml')
    
    # 整理時間日期欄
    for t in soup.find_all('span', class_='t'):
        t.replaceWith(t.text + ',')
    for d in soup.find_all('span', class_='d'):
        d.replaceWith(d.text)
    # 整理天氣示意圖欄
    for img in soup.find_all('img'):
        img.replaceWith(img.get('alt'))
    # 整理溫度及體感溫度欄
    for c in soup.find_all('span', class_='tem-C'):
        c.replaceWith(c.text)
    for f in soup.find_all('span', class_='tem-F'):
        f.replaceWith('')
    # 整理蒲福風級
    for w1 in soup.find_all('span', class_='wind_1'):
        w1.replaceWith(w1.text + ',')
    for w2 in soup.find_all('span', class_='wind_2'):
        w2.replaceWith('')    
        
    # pandas讀取表格
    df = pd.read_html(str(soup))[0]
    # 資料轉置
    df1 = df.T
    # 刪除不需要的欄
    df1.drop(columns=[1,3,5,7,9,11], axis=1, inplace=True)
    # 重設索引
    df1.reset_index(inplace=True)
    # 將index拆分成時間、日期二欄
    df1[['時間','日期']] = df1['index'].str.split(',', expand=True)
    # 將10拆分成蒲福風級、風向二欄
    df1[['蒲福風級','風向']] = df1[10].str.split(',', expand=True)
    # 刪除index及10二欄
    df1.drop(columns=['index', 10], inplace=True)
    # 修改欄位名稱
    columns = ['天氣狀況','溫度','降雨機率','體感溫度','相對溼度','舒適度','時間','日期','蒲福風級','風向']
    df1.columns = columns
    # 欄位重新排序
    df1 = df1[['時間','日期','天氣狀況','溫度','降雨機率','體感溫度','相對溼度','舒適度','蒲福風級','風向']]
    # 轉為json回傳
    print(df1.to_json(orient='records', force_ascii=False))

else:
    print('無此鄉鎮市區名稱!')

●問題顯示:
ValueError                                Traceback (most recent call last)
<ipython-input-3-7e1320fbc214> in <module>
     42
     43     # pandas讀取表格
---> 44     df = pd.read_html(str(soup))[0]
     45     # 資料轉置
     46     df1 = df.T

ValueError: No tables found

文淵閣工作室

文淵閣工作室
更新時間:2021/12/16 下午 07:11:47

 

氣象局網頁有大幅更改,請寄信到 service@e-happy.com.tw 將寄修正程式給您。




 

 

Re:python大數據特訓班第二版

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。