logo
Loading...

Python code with ChatGPT應用於股市(基礎篇) - 生成式AI從No-Code到Low-Code開發與應用四部曲 - Cupoy

投資理財可早日實現退休生活,但需注意風險與操作方法。 保守型投資者可尋找殖利率不錯的投資股票來投資。 這節想帶領大家來利用ChatGPT製作簡易的網路爬蟲,幫助列出"殖利率大於5%"的股票。 作為投資...

投資理財可早日實現退休生活,但需注意風險與操作方法。 保守型投資者可尋找殖利率不錯的投資股票來投資。 這節想帶領大家來利用ChatGPT製作簡易的網路爬蟲,幫助列出"殖利率大於5%"的股票。 作為投資的參考過程如下。  步驟一。 使用"臺灣證交交易"所查詢股票殖利率,  json 格式網址,", "我要寫一個查詢股票殖利率的程式" 之類的提示語。  讓ChatGPT告訴我們可以怎麼做,如下圖所示。 JSON的頁面:https://www.twse.com.tw/exchangeReport/BWIBBU_d 使用類似。請寫一個程式到"https://www.twse.com.tw/exchangeReport/BWIBBU_d, 列出殖利率大於5%的股票。 的提示語請chatgpt幫忙生成程式碼,如下圖所示。 直接copy code來把程式碼貼到colab上跑看看。 有可能會碰上bug或error, 請同學先靠著自己問chatGPT來Debug看看, 若解不開再看下面答案code. 我想要將輸出內容表格化一樣可以請chatGPT幫忙如下圖: import requests import pandas as pd def fetch_and_filter_stocks(url): # 從 URL 獲取數據 response = requests.get(url) if response.status_code != 200: print("無法獲取數據") return # 解析 JSON 數據 data = response.json() # 準備用於創建 DataFrame 的數據 filtered_stocks = [] # 檢查 "data" 鍵是否存在於 JSON 數據中 if 'data' in data: # 提取並篩選股票 for stock in data['data']: # 確保殖利率值可以轉換為浮點數 try: dividend_yield = float(stock[2]) if dividend_yield > 5.0: filtered_stocks.append(stock) except ValueError: pass # 創建 DataFrame df = pd.DataFrame(filtered_stocks, columns=data['fields']) return df # 調用函數並顯示結果 df = fetch_and_filter_stocks("https://www.twse.com.tw/exchangeReport/BWIBBU_d?response=json&date=20231117&stockNo=&_=") print(df) !pip install tabulate import requests from tabulate import tabulate def fetch_and_filter_stocks(url): # 從 URL 獲取數據 response = requests.get(url) if response.status_code != 200: print("無法獲取數據") return # 解析 JSON 數據 data = response.json() # 準備用於創建表格的數據 filtered_stocks = [] # 檢查 "data" 鍵是否存在於 JSON 數據中 if 'data' in data: # 提取並篩選股票 for stock in data['data']: # 確保殖利率值可以轉換為浮點數 try: dividend_yield = float(stock[2]) if dividend_yield > 5.0: filtered_stocks.append(stock) except ValueError: pass # 使用 tabulate 創建並輸出表格 print(tabulate(filtered_stocks, headers=data['fields'], tablefmt="grid")) # 替換為實際的 URL 和參數 fetch_and_filter_stocks("https://www.twse.com.tw/exchangeReport/BWIBBU_d?response=json&date=20231117&stockNo=&_=") import requests def fetch_and_filter_stocks(url): # 從 URL 獲取數據 response = requests.get(url) if response.status_code != 200: print("無法獲取數據") return # 假設數據為 JSON 格式且具有特定結構 data = response.json() # 提取並篩選股票 for stock in data['data']: # 將 'dividend_yield_field' 替換為實際的欄位名稱 if stock['dividend_yield_field'] > 5: print(stock) # 替換為實際的 URL 和參數 fetch_and_filter_stocks("https://www.twse.com.tw/exchangeReport/BWIBBU_d") #(--------------------------------------------以上會發生error------------------------------) #下面為正確答案可呼叫出殖利率大於5%的sorting rank import requests def fetch_and_filter_stocks(url): # 從 URL 獲取數據 response = requests.get(url) if response.status_code != 200: print("無法獲取數據") return # 解析 JSON 數據 data = response.json() # 檢查 "data" 鍵是否存在於 JSON 數據中 if 'data' in data: # 提取並篩選股票 for stock in data['data']: # 確保殖利率值可以轉換為浮點數 try: dividend_yield = float(stock[2]) if dividend_yield > 5.0: print(stock[0], stock[1], dividend_yield) except ValueError: pass # 替換為實際的 URL 和參數 fetch_and_filter_stocks("https://www.twse.com.tw/exchangeReport/BWIBBU_d?response=json&date=20231117&stockNo=&_=") 總而言之,透過學習幾個小節的技巧。 debug程式錯誤。可以讓chatgpt幫助我們實現一些非常有用的功能,進而提高工作效率。這些技巧也有助於我們更開快速的開發和測試程式碼。 達到與AI的協同合作。 取的股票新聞code: # 股票代號 stock_id = "2330" # 預設表格數據和欄位 field=['股號','日期','標題','內容'] data=[] # 取得 Json 格式資料 json_data = requests.get(f'https://ess.api.cnyes.com/ess/api/' f'v1/news/keyword?q={stock_id}&limit=20&page=1').json() # 依照格式擷取資料 items=json_data['data']['items'] for item in items: # 網址、標題和日期 news_id = item["newsId"] title = item["title"] publish_at = item["publishAt"] # 使用 UTC 時間格式 utc_time = datetime.utcfromtimestamp(publish_at) formatted_date = utc_time.strftime('%Y-%m-%d') # 前往網址擷取內容 url = requests.get(f'https://news.cnyes.com/' f'news/id/{news_id}').content soup = BeautifulSoup(url, 'html.parser') p_elements=soup .find_all('p') # 提取段落内容 p='' for paragraph in p_elements[4:]: p+=paragraph.get_text() data.append([stock_id, formatted_date ,title,p]) # 建立表格 df = pd.DataFrame(data,columns=field) df