Zeskrobuj stronę internetową i nawiguj, klikając przyciski
Chcę wykonać następujące czynności po stronie serwera:
1) zeskrobać stronę www
2) Symuluj kliknięcie na tej stronie, a następnie przejdź do nowej strony.
3) zeskrobuj nową stronę
4) symulowanie kliknięć niektórych przycisków na nowej stronie
5) wysyłanie danych z powrotem do klienta przez json czy coś
Myślę o użyciu go z Node.js.
Ale jestem zdezorientowany co do tego, którego modułu powinienem użyć
a) Zombie
b) Node.io
c) Phantomjs
d) JSDOM
e) cokolwiek innego
Zainstalowałem node, io, ale nie mogę go uruchomić za pomocą wiersza polecenia.
PS: pracuję w windows 2008 server
2 answers
Zombie.js i Node.io uruchom na JSDOM, stąd Twoje opcje są albo z JSDOM (lub dowolnym równoważnym opakowaniem), bezgłową przeglądarką (PhantomJS, SlimerJS) lub Cheerio.
- JSDOM jest dość powolny, ponieważ musi odtworzyć DOM i CSSOM w węźle.js.
- PhantomJS / SlimerJS są poprawnymi przeglądarkami bezgłowiowymi, więc wydajność jest ok, a te są również bardzo niezawodne.
- Cheerio jest lekką alternatywą dla JSDOM. Nie odtwarza całej strony w węźle.js (po prostu pobiera i parsuje DOM - nie jest wykonywany javascript). Dlatego tak naprawdę nie można klikać przycisków/linków, ale bardzo szybko skrobać strony internetowe.
Twój workflow w CasperJS powinien wyglądać mniej więcej tak:
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();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-18 11:41:23
Wymienione Moduły wykonują następujące czynności:
- Phantomjs / Zombie-symuluj przeglądarkę (bezgłowy-nic nie jest wyświetlane). Może być stosowany do skrobania statycznego lub dynamicznego. Lub testowanie stron html.
- Node.io/jsdom -webscraping: wyciąganie danych ze strony (statyczne).
Patrząc na twoje wymagania, możesz użyć phantom lub zombie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-10 17:29:29