แยกข้อมูลเดียวกันจากเอกสาร HTML ต่างๆ

สมมติว่าฉันมีหน้า HTML หลายหน้าจากเว็บไซต์ที่ไม่เกี่ยวข้อง แต่มีข้อมูลโดยรวมเหมือนกัน ฉันต้องการดึงข้อมูลนั้นในลักษณะที่ยืดหยุ่น เช่น ฉันต้องการเขียนตัวแยกข้อมูลจำนวนเล็กน้อยสำหรับทุกหน้า (ในอุดมคติแล้วคือตัวเดียว) สมมติว่าช่องต่างๆ คือ (เพื่อใช้ตัวอย่างบล็อก) author, date, title, text คลาสของแท็ก HTML ที่แสดงถึงสิ่งเหล่านี้อาจแตกต่างกันโดยสิ้นเชิงในแต่ละหน้า แต่ยังคงแสดงบนหน้าเว็บในลักษณะเดียวกันโดยประมาณ ตัวอย่างเช่น ใช้โพสต์นี้ จาก CNN และโพสต์นี้ จากกอว์เกอร์ ทั้งสองมีข้อมูลเดียวกัน - ข้อมูลที่ฉันต้องการ - อยู่ที่ใดที่หนึ่งบนหน้าเว็บเมื่อมีการแสดงข้อมูลจริง มีวิธีที่ดีในการดึงข้อมูลนั้นหรือไม่? การเขียนตัวแยกข้อมูลแยกกันเป็นทางเลือกหนึ่ง แต่ไม่ใช่ตัวเลือกที่ดี มีเอกสารประมาณพันสไตล์ในชุดข้อมูลที่ฉันต้องการใช้


person jclancy    schedule 18.05.2013    source แหล่งที่มา


คำตอบ (1)


วิธีเดียวที่คุณสามารถทำได้คือค้นหาองค์ประกอบทั่วไปในเว็บไซต์เหล่านั้นทั้งหมด (เช่น เว็บไซต์เหล่านั้นใช้โครงสร้าง DOM เดียวกัน หรือมีรหัสเดียวกัน หรือนำหน้าด้วยเนื้อหาเดียวกันในแท็กก่อนหน้า เช่น <h1>)

มิฉะนั้น คุณจะต้องเขียนกฎหรือนิพจน์ทั่วไปที่แตกต่างกันสำหรับแต่ละกรณี

ยกเว้นในกรณีที่คุณเขียนอัลกอริธึมที่ชาญฉลาดซึ่งสามารถรับรู้จุดประสงค์/ความหมายของเนื้อหาได้ แม้จะใช้ HTML ที่แตกต่างกัน ซึ่งไม่ใช่เรื่องง่ายหรือรวดเร็วในการเขียนแต่อย่างใด

person Francisco Zarabozo    schedule 18.05.2013
comment
ตัวเลือกที่สามคือสิ่งที่ฉันกำลังทำอยู่ ฉันคิดว่ามีคนเคยคิดถึงปัญหานี้มาก่อนและอาจแก้ไขได้ ตามหลักการแล้วพวกเขาจะโพสต์แหล่งที่มาทางออนไลน์หรืออธิบายเทคนิคที่พวกเขาใช้ - person jclancy; 19.05.2013
comment
ไม่ใช่ว่าฉันรู้ตัว แต่ Google ทำแบบนั้นเพื่อตรวจจับสิ่งต่างๆ และความเกี่ยวข้องมากมาย ฉันไม่รู้ว่าพวกเขามีโครงการโอเพ่นซอร์สที่เกี่ยวข้องกับเรื่องนั้นหรือไม่ แต่ฉันสงสัย หวังว่าคนอื่นที่นี่จะรู้เรื่องแบบนั้น - person Francisco Zarabozo; 19.05.2013