วิธีการดึงข้อมูลหุ้นหลายตัว ด้วยภาษาไพธอน
เตรียม Environment: ตรวจสอบว่าได้ติดตั้ง Library ครบหรือยังด้วยคำสั่ง pip install yfinance pandas
ไฟล์ CSV: อย่าลืมย้ำในคลิปเรื่อง encoding='utf-8-sig' เพราะเป็นปัญหาใหญ่ที่คนไทยมักเจอเวลาเปิดไฟล์ใน Excel แล้วภาษาไทยอ่านไม่ออก
---------------------------------
# Full Code
import yfinance as yf # นำเข้า Library สำหรับดึงข้อมูลการเงินจาก Yahoo Finance
import pandas as pd # นำเข้า Library สำหรับจัดการข้อมูลในรูปแบบตาราง (DataFrame)
from datetime import datetime # นำเข้าคำสั่งสำหรับดึงวันที่และเวลาปัจจุบันของระบบ
# รายชื่อหุ้นที่ต้องการดึงข้อมูล โดยระบุเป็นลิสต์ (List)
stocks = ["PTT.BK", "AAPL", "TU.BK"]
# สร้างลิสต์ว่างเพื่อเอาไว้เก็บข้อมูลของหุ้นแต่ละตัวที่จะวนลูปดึงมาได้
data_list = []
# ดึงวันที่และเวลาปัจจุบัน แล้วจัดรูปแบบเป็น "ปี-เดือน-วัน ชั่วโมง:นาที:วินาที"
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# เริ่มการวนลูป (Loop) เพื่อดึงข้อมูลหุ้นทีละตัวจากลิสต์ stocks
for s in stocks:
t = yf.Ticker(s) # สร้างออบเจกต์ Ticker เพื่อเชื่อมต่อกับข้อมูลของหุ้นตัวนั้นๆ
# ดึงข้อมูลพื้นฐาน เช่น ชื่อเต็มของบริษัท ถ้าไม่พบให้ใส่คำว่า 'ไม่พบชื่อ'
name = t.info.get('longName', 'ไม่พบชื่อ')
# ดึงสกุลเงินที่ใช้ซื้อขายหุ้นตัวนั้นๆ
currency = t.info.get('currency', 'Unknown')
# เข้าถึงข้อมูลราคาแบบรวดเร็ว (Fast Info) ซึ่งดึงค่าได้ไวขึ้น
info = t.fast_info
current_p = info['last_price'] # ราคาซื้อขายล่าสุด (Last Price)
open_p = info['open'] # ราคาตอนเปิดตลาด (Open)
high_p = info['day_high'] # ราคาสูงสุดของวัน (High)
low_p = info['day_low'] # ราคาต่ำสุดของวัน (Low)
close_p = info['previous_close'] # ราคาปิดของวันทำการก่อนหน้า (Previous Close)
# นำข้อมูลที่ดึงได้มาจัดเก็บในรูปแบบ Dictionary แล้วเพิ่มเข้าไปใน data_list
data_list.append({
"Date": current_time, # วันที่ดึงข้อมูล
"Stock Name": f"{name} ({s})", # ชื่อบริษัทพร้อมตัวย่อ
"Last Price": round(current_p, 2), # ราคาล่าสุด (ปัดเศษ 2 ตำแหน่ง)
"Open": round(open_p, 2), # ราคาเปิด (ปัดเศษ 2 ตำแหน่ง)
"High": round(high_p, 2), # ราคาสูงสุด (ปัดเศษ 2 ตำแหน่ง)
"Low": round(low_p, 2), # ราคาต่ำสุด (ปัดเศษ 2 ตำแหน่ง)
"Close": round(close_p, 2), # ราคาปิดก่อนหน้า (ปัดเศษ 2 ตำแหน่ง)
"Currency": currency # สกุลเงิน
})
# แปลงลิสต์ของ Dictionary ให้กลายเป็นตาราง DataFrame เพื่อความสวยงามและจัดการง่าย
df = pd.DataFrame(data_list)
# แสดงข้อความหัวข้อพร้อมระบุเวลาที่ดึงข้อมูล
print(f"--- ข้อมูลหุ้นรายวัน ณ วันที่ {current_time} ---")
# แสดงผลตารางบนหน้าจอ โดยใช้ to_string(index=False) เพื่อไม่ให้แสดงเลขลำดับแถวด้านหน้า
print(df.to_string(index=False))
# บันทึกข้อมูลทั้งหมดลงไฟล์ CSV
# index=False คือไม่เซฟเลขลำดับแถว
# encoding='utf-8-sig' เพื่อให้ Excel เปิดอ่านภาษาไทยได้ถูกต้อง
df.to_csv("Stock_Full_Data.csv", index=False, encoding='utf-8-sig')
# แจ้งเตือนเมื่อการทำงานเสร็จสมบูรณ์
print("\nบันทึกไฟล์ Stock_Full_Data.csv เรียบร้อยแล้ว!")
---------------------------------------------------------

ความคิดเห็น
แสดงความคิดเห็น