2013-08-10 27 views
20

Sunucu tarafında aşağıdaki eylemleri gerçekleştirmek istediğiniz tıklayarak düğmelerle gidin: Bir web sayfasını
2) o sayfadaki bir tıklama simüle ve sonra yeni sayfaya gidin kazıyınPençe Bir web sayfası ve

1).
3) json falan ben node.js ile kullanmaya düşünüyorum

yoluyla müşteriye geri veri gönderme yeni bir sayfa
4) yeni sayfaya
5 bazı düğme tıklama simüle) kazıyın . bu modül, i
a) Zombi
b) Node.io
c)
d) JSDOM
e) başka bir şey

yüklediğimi düğüm Phantomjs kullanmalıdır olarak

Ancak karıştı , ancak komut istemiyle çalıştıramam.

PS: Ben 2008 sunucu aşağıdaki işlemleri listelenen

cevap

30

Zombie.js ve Node.io, JSDOM üzerinde çalışır, dolayısıyla seçenekleriniz JSDOM (veya herhangi bir eşdeğer sarmalayıcı), başsız bir tarayıcı (PhantomJS, SlimerJS) veya Cheerio ile devam eder.

  • JSDOM oldukça yavaştır çünkü DOM ve CSSOM'u Node.js.
  • PhantomJS/SlimerJS uygun başsız tarayıcılardır, bu nedenle performanslar iyidir ve bunlar da çok güvenilirdir. JSDOM için hafif bir alternatif olan
  • Cheerio. Tüm sayfayı Node.js içinde yeniden oluşturmaz (sadece DOM'ı indirir ve ayrıştırır - javascript yürütülmez). Bu nedenle, gerçekten düğmeleri/linkleri tıklayamazsınız, ancak web sayfalarını kazımak çok hızlıdır.

Gereksinimlerinize göre, muhtemelen başsız bir tarayıcı gibi bir şeyle giderdim. Özellikle, güzel ve etkileyici bir API'ye sahip olduğu için CasperJS'u seçerim, hızlı ve güvenilirdir (JSDOM'nin yaptığı gibi dom veya css'nin nasıl ayrılacağı ve oluşturulacağı konusunda yeniden icat edilmesine gerek yoktur) ve çok kolay düğmeler ve bağlantılar gibi öğelerle etkileşime girer. CasperJS içinde

İş akışınız Bunun gibi daha az ya da görünmelidir:

casper.start(); 

casper 
    .then(function(){ 
    console.log("Start:"); 
    }) 
    .thenOpen("https://www.domain.com/page1") 
    .then(function(){ 
    // scrape something 
    this.echo(this.getHTML('h1#foobar')); 
    }) 
    .thenClick("#button1") 
    .then(function(){ 
    // scrape something else 
    this.echo(this.getHTML('h2#foobar')); 
    }) 
    .thenClick("#button2") 
    thenOpen("http://myserver.com", { 
    method: "post", 
    data: { 
     my: 'data', 
    } 
    }, function() { 
     this.echo("data sent back to the server") 
    }); 

casper.run(); 
+0

Ayrıca Ya benim deneyim Zombi olarak zombi' – user2129794

+0

kullanmayla ilgili görünümüdür PhantomJS veya CasperJS kadar güvenilir değildir.Bazen akış çok garip arızalarla kesintiye uğruyor ve sayfayı gezinmek için düğmeler, tıklamalar, bağlantılar vb. Ne zaman kullanılacağını anlayamıyorum. Bununla birlikte, Node'un kazıma işlemini yürütmesi ve harici bir işlem olmaması iyi bir şey. Sanırım gerçekten uygulamanıza bağlı. Harici bir servisin kazıma işlemini gerçekleştirdiği bir ortamda çalışabilirseniz, baştan başa başsız bir tarayıcıyla devam edin. – danielepolencic

2

modülleri pencerelerde çalışıyorum:

  • Phantomjs/Zombie - tarayıcı simüle (başsız - hiçbir şey gerçekten görüntülenmeden). Statik veya dinamik kazıma için kullanılabilir. Veya html sayfalarınızın test edilmesi.
  • Node.io/jsdom - webscraping: Verileri sayfadan ayıklama (statik).

Gereksinimlerinize bakarak, hayalet veya zombi kullanabilirsiniz.