Instapaper gibi PHP ile Metin Ayrıştırıcı

5 Cevap php

Instapaper yaptığım gibi, PHP ile bir metin ayrıştırıcı yazmaya çalışıyorum. Ne yapmak istiyorum; Bir web sayfasını almak ve metin-okunur modda ayrıştırmak.

Bu cURL ve şerit HTML etiketleri ile web sayfası almak basit. Ama her web sayfasının bazı ortak alanlar var; başlığı gibi, navigasyon, kenar çubuğu, altbilgi, afiş vb sadece metin modunda yazı almak ve diğer tüm parçalar hariç istiyorum. Ben "id" veya "sınıf" bilgi bilmek eğer bu parçaların dışarıda da basit. Ama ben bu süreci otomatik hale ve Instapaper gibi, herhangi bir sayfa için geçerli çalışıyorum.

Ben arasındaki tüm içeriği olsun ama başlık, kenar çubuğu veya altbilgi dışlamak ve sadece ana maddesi vücut nasıl bilmiyorum. Ben sadece ana maddesi kısmını almak için bir mantık geliştirmek zorunda.

Bana tam kodunu bulmak için önemli değil. Ayrıca ben PHP ile kendi kod yazmak için deneyebileceğiniz gibi gereksiz parçalar hariç anlamak için yararlı olacaktır. Ayrıca yararlı olacağını orada diğer dillerde herhangi bir örnek varsa.

Yardım için teşekkürler.

5 Cevap

Bu Bookmarklet arkasında algoritmaları bakarak deneyebilirsiniz, readability - Bu tüm web sayfası üzerinde çöp arasında içerik ayıklamak için iyi bir başarı oranı var.

Benim arkadaşım bunu tavsiye ediyorum, o yüzden bunu yaptı - Ben çalıştığını biliyorum çünkü, ve ben o verileri ayrıştırmak için kullandığı birçok teknik farkındayım. Sen ne soran için bu teknikleri uygulamak olabilir.

Goose gelen kaynağını bir göz atabilirsiniz -> zaten böyle Instapaper metin çekimi sürü yok

https://github.com/jiminoc/goose/wiki

Shuyo Nakatani gelen ExtractContent koduna bakabilirsiniz.

Özgün Ruby kaynak http://rubyforge.org/projects/extractcontent/ veya Perl için bunun bir liman görmek http://metacpan.org/pod/HTML::ExtractContent

Eğer gerçekten bu bir HTML parser kullanmayı düşünmelisiniz. Benzer sayfaları toplayın ve farklı düğümleri bulmak için DOM ağaçları karşılaştırın.

Bu article, farklı yaklaşımların bir karşılaştırma sağlar. java kütüphanesi boilerpipe hayli yüksek oldu. boilerpipe yerinde diğer algoritmalar karşılaştırır, onun bilimsel makale bulabilirsiniz.

tüm algoritmalar süit bütün amaçları. Bu tür araçların en büyük uygulama sadece bir arama motoru olarak endekse ham metni elde etmektir. fikir arama sonuçları reklamlar tarafından berbat olmak istemiyorum olmak. Böyle ekstraksiyon yıkıcı olabilir; alışkanlık size, insanların Instapaper veya okunabilirliği ile istediğiniz nedir "iyi okuma alanı" vermek anlamına gelir.