สมมติว่าฉันมีหน้า HTML หลายหน้าจากเว็บไซต์ที่ไม่เกี่ยวข้อง แต่มีข้อมูลโดยรวมเหมือนกัน ฉันต้องการดึงข้อมูลนั้นในลักษณะที่ยืดหยุ่น เช่น ฉันต้องการเขียนตัวแยกข้อมูลจำนวนเล็กน้อยสำหรับทุกหน้า (ในอุดมคติแล้วคือตัวเดียว) สมมติว่าช่องต่างๆ คือ (เพื่อใช้ตัวอย่างบล็อก) author, date, title, text
คลาสของแท็ก HTML ที่แสดงถึงสิ่งเหล่านี้อาจแตกต่างกันโดยสิ้นเชิงในแต่ละหน้า แต่ยังคงแสดงบนหน้าเว็บในลักษณะเดียวกันโดยประมาณ ตัวอย่างเช่น ใช้โพสต์นี้ จาก CNN และโพสต์นี้ จากกอว์เกอร์ ทั้งสองมีข้อมูลเดียวกัน - ข้อมูลที่ฉันต้องการ - อยู่ที่ใดที่หนึ่งบนหน้าเว็บเมื่อมีการแสดงข้อมูลจริง มีวิธีที่ดีในการดึงข้อมูลนั้นหรือไม่? การเขียนตัวแยกข้อมูลแยกกันเป็นทางเลือกหนึ่ง แต่ไม่ใช่ตัวเลือกที่ดี มีเอกสารประมาณพันสไตล์ในชุดข้อมูลที่ฉันต้องการใช้
แยกข้อมูลเดียวกันจากเอกสาร HTML ต่างๆ
คำตอบ (1)
วิธีเดียวที่คุณสามารถทำได้คือค้นหาองค์ประกอบทั่วไปในเว็บไซต์เหล่านั้นทั้งหมด (เช่น เว็บไซต์เหล่านั้นใช้โครงสร้าง DOM เดียวกัน หรือมีรหัสเดียวกัน หรือนำหน้าด้วยเนื้อหาเดียวกันในแท็กก่อนหน้า เช่น <h1>
)
มิฉะนั้น คุณจะต้องเขียนกฎหรือนิพจน์ทั่วไปที่แตกต่างกันสำหรับแต่ละกรณี
ยกเว้นในกรณีที่คุณเขียนอัลกอริธึมที่ชาญฉลาดซึ่งสามารถรับรู้จุดประสงค์/ความหมายของเนื้อหาได้ แม้จะใช้ HTML ที่แตกต่างกัน ซึ่งไม่ใช่เรื่องง่ายหรือรวดเร็วในการเขียนแต่อย่างใด
person
Francisco Zarabozo
schedule
18.05.2013
ตัวเลือกที่สามคือสิ่งที่ฉันกำลังทำอยู่ ฉันคิดว่ามีคนเคยคิดถึงปัญหานี้มาก่อนและอาจแก้ไขได้ ตามหลักการแล้วพวกเขาจะโพสต์แหล่งที่มาทางออนไลน์หรืออธิบายเทคนิคที่พวกเขาใช้
- person jclancy; 19.05.2013
ไม่ใช่ว่าฉันรู้ตัว แต่ Google ทำแบบนั้นเพื่อตรวจจับสิ่งต่างๆ และความเกี่ยวข้องมากมาย ฉันไม่รู้ว่าพวกเขามีโครงการโอเพ่นซอร์สที่เกี่ยวข้องกับเรื่องนั้นหรือไม่ แต่ฉันสงสัย หวังว่าคนอื่นที่นี่จะรู้เรื่องแบบนั้น
- person Francisco Zarabozo; 19.05.2013