Mengekstraksi data yang sama dari berbagai dokumen HTML

Katakanlah saya memiliki beberapa halaman HTML dari situs web yang tidak terkait, tetapi berisi informasi keseluruhan yang sama. Saya ingin mengekstrak informasi tersebut dengan cara yang fleksibel, yaitu saya hanya ingin menulis sejumlah kecil ekstraktor data untuk semua halaman (idealnya, satu). Katakanlah kolomnya adalah (untuk menggunakan contoh blog) author, date, title, text. Kelas tag HTML yang menunjukkannya bisa sangat berbeda untuk setiap halaman, namun tetap ditampilkan pada halaman dengan cara yang kurang lebih sama. Misalnya, ambil postingan ini dari CNN dan postingan ini dari Gawker. Keduanya berisi informasi yang sama - informasi yang saya inginkan - di suatu tempat pada halaman ketika informasi tersebut benar-benar ditampilkan. Apakah ada cara yang bagus untuk mengekstrak data itu? Menulis ekstraktor terpisah adalah suatu pilihan, tetapi bukan pilihan yang baik; ada sekitar seribu gaya dokumen dalam kumpulan data yang ingin saya gunakan.


person jclancy    schedule 18.05.2013    source sumber


Jawaban (1)


Satu-satunya cara Anda dapat melakukannya adalah dengan menemukan elemen umum di semua situs web tersebut (misalnya, situs tersebut memiliki struktur DOM yang sama, atau memiliki ID yang sama, atau diawali dengan konten yang sama di tag sebelumnya seperti <h1>).

Jika tidak, Anda perlu menulis aturan atau ekspresi reguler yang berbeda untuk setiap kasus.

Kecuali, tentu saja, Anda menulis algoritme yang sangat cerdas sehingga mampu mengenali maksud/makna konten bahkan dengan HTML yang berbeda - yang tidak mudah dan tidak cepat untuk ditulis dengan cara apa pun.

person Francisco Zarabozo    schedule 18.05.2013
comment
Opsi ketiga adalah apa yang saya inginkan. Saya pikir seseorang telah memikirkan masalah ini sebelumnya dan mungkin bisa menyelesaikannya. Idealnya mereka memposting sumbernya secara online atau menjelaskan teknik yang mereka gunakan. - person jclancy; 19.05.2013
comment
Bukannya aku menyadarinya. Tapi Google, misalnya, melakukan itu untuk mendeteksi banyak hal dan relevansi. Saya tidak tahu apakah mereka memiliki proyek sumber terbuka yang terkait dengan itu, tapi saya meragukannya. Semoga orang lain di sini mengetahui hal seperti itu. - person Francisco Zarabozo; 19.05.2013