วิธีดึงบทความฉบับเต็มจาก RSS Feed ผลทดสอบจาก 32 ฟีด
ผลการทดสอบดึงข้อมูลจาก 32 ฟีดสาธารณะเผยปัญหา RSS Feed ที่มักมีตัวอย่างย่อและวิธีดึงบทความฉบับเต็ม พร้อมโค้ด Python มาตรฐาน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ทดสอบจาก 32 ฟีดสาธารณะ พบ 13 ฟีดที่ต้องดึงหน้าเว็บเพิ่ม
- การตรวจสอบแท็ก content:encoded มักให้ผลคลาดเคลื่อนในทั้งสองทิศทาง
- ฟีดส่วนใหญ่รองรับ ETag หรือ Last-Modified ช่วยประหยัดแบนด์วิดท์
- การจัดการ GUID และวันที่ใช้งานได้ราบรื่นโดยไม่มีปัญหาซับซ้อน
บทความนี้เรียบเรียงจากประสบการณ์ของ Claude Code ที่ทำการทดสอบดึงข้อมูลจาก 32 ฟีดสาธารณะโดยเว้นระยะห่าง 2 วินาที ในวันที่ 12 ตุลาคม 2026 และทำซ้ำอีกครั้งในวันที่ 11 November 2026 การทดสอบนี้มุ่งเน้นการแก้ปัญหาสำหรับผู้ที่ต้องการนำบล็อกโพสต์เข้าสู่ระบบ RAG สรุปด้วย LLM หรือจดหมายข่าว โดยคำถามแรกที่ต้องตอบคือฟีดนั้นให้เนื้อหาฉบับเต็มหรือมีเพียงตัวอย่างย่อ (Teaser)
คำแนะนำทั่วไปมักบอกให้ตรวจสอบฟิลด์ content:encoded แต่จากการทดสอบบน 32 ฟีด กฎดังกล่าวกลับใช้ไม่ได้ผลในทั้งสองทาง โดยมี 4 ฟีดที่ใส่เนื้อหาเต็มไว้ใน description โดยไม่มีฟิลด์ content เลย และมี 3 ฟีดที่มีฟิลด์ content แต่กลับใส่เพียงเนื้อหาตัวอย่างย่อเกือบทุกรายการ รูปแบบของฟีดทั้งหมดประกอบด้วย RSS 2.0 จำนวน 22 ฟีด, Atom 8 ฟีด, JSON Feed 2 ฟีด และไม่มี RSS 1.0 เลย โดยมี 1 ฟีดที่ให้บริการเป็น text/html แต่ยังคงเป็น RSS ที่ถูกต้องตามมาตรฐาน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ตัวอย่างย่อในฟีดมักจะมีการระบุไว้ที่ส่วนท้าย แต่แต่ละเว็บไซต์จะมีคำพูดที่แตกต่างกันไป การตรวจสอบ 80 ตัวอักษรสุดท้ายสามารถจับตัวอย่างย่อได้เกือบทั้งหมด ยกเว้น Stratechery ที่ต้องดูจากความยาวของเนื้อหาเท่านั้น ข้อผิดพลาดที่มักพบในเวอร์ชันแรกคือการติดแท็กท้ายของ WordPress และลิงก์ส่วนท้าย ทำให้กฎที่สรุปได้คือ ให้ตัดฟุตเตอร์ของ WordPress และลิงก์ส่วนท้ายออก จากนั้นจึงพิจารณาว่าตัวอย่างย่อคือข้อความที่มีคำบ่งชี้ชัดเจนที่ท้ายข้อความหรือมีความยาวเพียงไม่กี่ร้อยตัวอักษร หากเป็นตัวอย่างย่อจะต้องดึงข้อมูลจากหน้าเว็บหลัก
การดึงข้อมูลจาก RSS Feed เพื่อนำมาประมวลผลต่อในระบบ RAG หรือการทำสรุปเนื้อหามักพบปัญหาความไม่สม่ำเสมอของโครงสร้างข้อมูลจากแต่ละแพลตฟอร์ม การสร้างสคริปต์ตรวจสอบเงื่อนไขและจัดการแคชจึงเป็นหัวใจสำคัญในการลดภาระการดาวน์โหลดข้อมูลซ้ำซ้อนและช่วยให้ระบบทำงานได้อย่างมีประสิทธิภาพสูงสุด
สำหรับ 13 ฟีดที่จำเป็นต้องดึงหน้าเว็บ จะต้องดึง URL ของรายการนั้นและเก็บเฉพาะส่วนที่เป็นบทความ สิ่งสำคัญจากตัวฟีดเองคือเรื่องของแคช โดยมี 26 จาก 32 ฟีดที่ส่ง ETag หรือ Last-Modified กลับมา การส่งค่าเหล่านี้กลับไป (If-None-Match, If-Modified-Since) ทำให้ได้รับสถานะ 304 พร้อมเนื้อหาว่างเปล่าจาก 24 ฟีด ยกเว้น 2 ฟีด ได้แก่ Smashing Magazine ที่ส่งข้อมูล 1.4 เมกะไบต์ สำหรับ 40 โพสต์ และ Dan Luu ที่ส่ง 6.7 เมกะไบต์ สำหรับ 128 โพสต์
ในส่วนของ GUID หรือ id พบว่า 15 ฟีดไม่ได้ใช้ URL เป็น GUID สำหรับทุกรายการ โดยมีการใช้ฟิลด์อื่นแทน เช่น permalink แบบถาวร หรือไอดีเฉพาะตัว ขณะที่ 16 ฟีดใช้ URL เป็น GUID สำหรับทุกรายการ สำหรับข้อมูลวันที่ถือเป็นส่วนเดียวที่ไม่มีปัญหา โดยวันที่ทั้งหมด 1,991 รายการ (และ 2,095 รายการในหนึ่งเดือนต่อมา) สามารถแปลงค่าได้อย่างถูกต้องผ่านฟังก์ชันมาตรฐาน
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น