Quantcast
Viewing all articles
Browse latest Browse all 2045

บันทึกการดึงข้อมูลจาก web ด้วย Puppeteer (Web Scraping)

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

ได้รับงานเล็ก ๆมาลองทำเล่นดู
นั่นคือ การดึงข้อมูลจาก web มาเพื่อใช้งานต่อไป
เนื่องจาก web ปลายทางไม่มี API เตรียมไว้ให้
ดังนั้นการดึงข้อมูลหรือเรียกว่า Web Scraping
จึงเป็นทางเลือกที่น่าสนใจ
แต่ก็ต้องระวังด้วยว่า web ปลายทางจะ block
หรือตรวจจับการดึงข้อมูลรูปแบบนี้หรือไม่

เมื่อได้รู้ความต้องการและปัญหาที่ต้องแก้ไขแล้ว

จึงมาถึงเครื่องมือที่ใช้งาน
ซึ่งจากที่เคยทำมามีเยอะเลย
ทั้งเรียกไปยังปลายทางตรง ๆ แล้วเอาข้อมูลมา processing ต่อ
หรือเปิด web browser แล้วตัดเอาข้อมูลใน element ที่ต้องการมา

โดยแนวทางที่เลือกคือ เปิด web browser นี่แหละ
แต่จะเป็น web browser ขึ้นมาก็น่าจะช้ามาก ๆ
ดังนั้นจึงเลือกเป็น headless mode ดีกว่า
และ library แรกที่เด้งมาจากในหัวเลยคือ Puppeteer นั่นเอง
ก็เลยใช้ซะ
ทำงานผ่าน DevTool protocol  สำหรับควบคุม Google Chrome เท่านั้น
ซึ่งเร็วแน่นอน !!

การใช้งานก็ไม่ได้ยากอะไร ใคร ๆ ก็เขียนได้

โดยมีขั้นตอนการทำงานดังนี้

  • เปิด browser ขึ้นมา ซึ่งสามารถกำหนด option ต่าง ๆ ไปได้ เช่น timeout เป็นต้น
  • ไปยังหน้าหรือ URL ของ web ที่เราต้องการ แน่นอนว่า ใส่ option ไปได้อีก
  • ทำการเข้าถึง element ที่เราต้องการนำข้อมูลมาใช้งาน โดยสามารถเข้าถึงได้ด้วย selector ของ element นั้น ๆ ตรงนี้ก็ต้องใช้ความเข้าในเรื่อง Web และ DOM กันนิดหน่อย แต่ไม่ยากจนเกินไป
  • สุดท้ายก็อย่างลืมปิด web browser ด้วยนะ

แสดงตัวอย่าง code ง่าย ๆ ดังนี้

[gist id="1eb260387e8ca980007d560d582deed1" file="sample.js"]

เขียน code จบงานภายใน 10-20 บรรทัดเท่านั้น
ที่เหลือก็อยู่ความต้องการของเราแล้วว่าจะเอาไปทำอะไรต่อไป
ซึ่งไม่ยากเท่าไรนัก

สรุปแล้วแนวทางนี้ถูกสร้างขึ้นมาภายใน 10 นาที

จากนั้นก็ตกแต่งให้สวยงามและให้ได้ผลตามที่ต้องการอีกเล็กน้อย
สุดท้ายก็ run งาน ในส่วนนี้แหละที่ใช้เวลาเป็นวัน
เนื่องจากข้อมูลเยอะ และระบบปลายทางช้ามาก ๆ
แถมการทำงานของ code ที่ผมเขียนยังเป็นแบบ sequencial
ดังนั้นก็ยิ่งช้าไปกันใหญ่ แต่ก็ถือว่าตอบโจทย์และเพียงพอต่อการใช้งานแล้ว

ขอให้สนุกกับก่ีเขียน code


Viewing all articles
Browse latest Browse all 2045

Trending Articles