Node.js üzerinde HTML ayrıştırıcı [kapalı]


198

Ruby'nin gibi orada şey mi Nokogiri nodejs üzerinde? Yani kullanıcı dostu bir HTML ayrıştırıcısı.

Node.js modülleri sayfasında bazı ayrıştırıcılar gördüm, ancak güzel ve taze bir şey bulamıyorum.


3
"Dost" demekle ne demek istiyorsun? Nokogiri'nin XPath ve CSS seçici desteği ile düğümleri çalışmak ve seçmek uygun mu? Geçersiz "etiket çorbası" HTML'sini ayrıştırma hakkı var mı?
Phrogz

JQuery'den memnunsanız, bu yanıtı düşünün .
Lucio Paiva

Yanıtlar:


446

DOM oluşturmak istiyorsanız jsdom kullanabilirsiniz .

Ayrıca cheerio var, jQuery arayüzü var ve bu günlerde performans benzer olsa da jsdom'un eski sürümlerinden çok daha hızlı.

Bir akış ayrıştırıcısı olan htmlparser2'ye bakmak isteyebilirsiniz ve karşılaştırmasına göre, diğerlerinden daha hızlı görünüyor ve varsayılan olarak DOM yok. Ayrıca bir DOM oluşturan bir işleyici ile birlikte geldiği için bir DOM üretebilir. Bu, cheerio tarafından kullanılan ayrıştırıcıdır.

parse5 de iyi bir çözüm gibi görünüyor. O (son bu güncellemenin olarak taahhüt beri 11 gün) WHATWG uyumlu, oldukça aktif, ve kullanılan jsdom , açısal ve Polymer .

Web kazıma için HTML'yi ayrıştırmak istiyorsanız, YQL 1'i kullanabilirsiniz . Bunun için bir düğüm modülü var. YQL Bence HTML kodunuz statik bir web sitesindeyse, kendi kodunuza ve işlem gücünüze değil, bir hizmete güveniyorsanız en iyi çözüm olacaktır . Sayfanın web sitesinin robot.txt tarafından izin verilmemesi durumunda çalışmayacağını unutmayın, ancak YQL bununla çalışmaz.

Eğer kazımaya çalıştığınız web sitesinin ise dinamik o zaman bir kullanma olmalıdır başsız tarayıcı gibi phantomjs . Ayrıca phantomjs düşünüyorsanız , casperjs bir göz atın . Ve ile düğümden casperjs kontrol edebilirsiniz SpookyJS .

Phantomjs yanında var zombiejs . Düğümlere gömülemeyen hayaletlerin aksine, zombijs sadece bir düğüm modülüdür.

İkinci çözümler için bir nettut + toturial var .


1 Ağustos 2014'ten bu yana, YQL için bir zorunluluk olan YUI kütüphanesi artık aktif olarak korunmuyor kaynak


1
DomHandler modülünü (htmlparser2 ile birlikte) kullanarak htmlparser2'den DOM alabilirsiniz. DOM oluşturma yükü olmadan diğer HTML türlerini işlemeye izin vermek amacıyla ayrılırlar.
esp

@esp Teşekkürler, Standart olmayan DOM olduğunu düşünmeden önce, bu bölümü buna göre değiştirdim.
Farid Nouri Neshat

Tarama için nasıl YQL emin değilim - daha fazla biçimlendirme işleme değil web hizmeti sonuçlarına katılmak için.
dardenfall

@dardenfall Haklısınız, tarama doğru terim değil. Kazıma ile değiştirdim :)
Farid Nouri Neshat

@Farid - (eğer yapabilseydim sana mesaj gönderirdim) yorumlarda tartışma riski (üzgünüm!) Hala kazıma için nasıl kullandığını göremiyorum. Sitelerle değil web hizmetleriyle çalışır ve wservices ile nadiren html'yi ayrıştırırsınız. Belki xml, ama html değil.
dardenfall


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.