ดูดด! ข้อมูลหุ้น SET50 ด้วยเทคนิค Web Scraping ผ่าน Selenium, BeautifulSoup
Updated: May 9, 2022
สำหรับใน website SET50 ข้อมูลที่อยู่ในรูปแบบของตารางที่อยู่บน Dynamic Website สามารถใช้ Selenium เข้าไปทำงานกับหน้าเวปโหลด HTML ออกมา และดึงด้วยคำสั่งสำเร็จได้เลย! นอกจากนี้จะพาทุกคนมาดูเครื่องมืออื่นๆ ที่ใช้ดึงข้อมูลตารางผ่าน Google Spreadsheet และเปรียบเทียบข้อดีข้อเสียสำหรับเทคนิคต่างๆ แบบชัดๆ!
เรียนในบทเรียนวิดีโอผ่าน Youtube
ลิ้งค์ข้อมูลที่ใช้งาน
เวปใช้สร้าง flow charthttps://app.diagrams.net/
set50 page https://www.set.or.th/th/market/index/set50/overview
ปัญหาทั่วไปของเครื่องมือเบื้องต้นสำหรับการเก็บข้อมูลหน้าเวป
สำหรับการใช้ Google Spreadsheet และคำสั่ง .read_html() ของ Pandas จะมีการทำงานคล้ายกัน โดยสามารถทำงานได้ดีกับ static website ที่จะส่งข้อมูล HTML ที่เก็บข้อมูลทั้งหมดมาในทันทีที่มีการขอข้อมูลมาใช้งาน แต่หลายครั้งที่แหล่งข้อมูลของเราอยู่ในรูปแบบของ dynamic website ที่ต้องมีการส่ง
flow การทำงานของโปรแกรม
เข้าไปยังเวปไซต์ที่เก็บหุ้นทุกตัวเอาไว้
นำชื่อหุ้นมาสร้างเป็นลิ้งค์สำหรับการเก็บข้อมูลของหุ้นแต่ละตัว
ไปยังหน้าเวปที่เก็บข้อมูลของหุ้นแต่ละตัว
ดึงตารางข้อมูลออกมา
ปรับแต่งข้อมูล
เก็บออกมาใส่ Dictionary

Checkpoint: จะใช้ได้จริง จะต้องทำสิ่งเหล่านี้ได้!
สำหรับการสร้างโปรเจคในวันนี้ สามารถทำตามขั้นตอนตามด้านทางทีละขั้นตอน ตาม checkpoint ด้านล่างได้เลย!
Checkpoint 1 ทดลองดึงตารางด้วย .read_html()

Checkpoint 2 ตัวอย่างการดึงข้อมูลด้วย .read_html() กับเวปตัวอย่างที่เป็น dynamic

Checkpoint 3 การติดตั้ง และการเตรียม chromedriver สำหรับการใช้งาน

Checkpoint 4 การเปิด chromedriver สำหรับการสั่งคอมพิวเตอร์เข้าเวปไซต์ ด้วย Python

Checkpoint 5 เข้าไปยังเวป SET50 ด้วย chromedriver
เมื่อเปิดแล้ว กดให้แสดงผลข้อมูล ให้ครบ (100 รายการ)

Checkpoint 6 การดึงตัว HTML ออกจาก website

Checkpoint 7 การสกัดตารางออกจาก HTML

Checkpoint 8 การนำข้อมูล columns มาแก้ไขให้เหมาะสม

Checkpoint 9 นำ columns ที่เหมาะสมมาตั้งเป็น columns ของตาราง

Checkpoint 10 การตั้ง index หรือ row ให้เหมาะกับการดึงข้อมูล

Checkpoint 11 ดึงข้อมูลชื่อหลักทรัพย์ มาสร้างเป็นลิ้งค์เพื่อเข้าไปยังข้อมูล

ลCheckpoint 12 ไปยังเวปไซต์ ดึง HTML และดึงตารางข้อมูลจากเวปที่เก็บข้อมู

Checkpoint 13 บันทึกข้อมูลตารางลงตัวแปรนำไปใช้งานต่อ

Checkpoint 14 นำข้อมูลตารางแต่ละตัวบันทึกลง Dictionary

Checkpoint 15 ทดลองดึงข้อมูลชื่อหลักทรัพย์แต่ละตัวที่เก็บไว้

Checkpoint 16 นำข้อมูลชื่อหลักทรัพย์แต่ละตัวมาสร้างเป็นลิ้งค์ เข้าเวป ดึงข้อมูล บันทึกลง Dictionary

Checkpoint 17 สร้างคำสั่งไปยังหน้าที่เก็บข้อมูลทุกหลักทรัพย์

Checkpoint 18 สร้างคำสั่งดึงข้อมูลตารางจากเวป และเตรียมเพื่อใช้งานต่อ

Checkpoint 19 สร้างคำสั่งสำหรับการเข้าไปดึงตารางจากแต่ละหน้าเวปที่เก็บข้อมูลตาราง
