2015-01-29 19 views
13

Po pierwsze, nie szukam pomocy w środowisku programowania lub testowania. Również jestem nowy w phantomjs i wszystko, czego chcę, to tylko działanie linii poleceń phantomjs na terminalu linux.Uzyskaj źródło html renderowane w javascript przy użyciu phantomjs

Mam stronę html, której treść jest renderowana za pomocą kodu javascript. Potrzebuję tylko tego, aby pobrać renderowane treści HTML za pomocą phantomjs.

Nie mam pojęcia o użyciu phantomjs. Mam trochę doświadczenia w pisaniu skryptów powłoki. Więc próbowałem to zrobić z curl. Ale ponieważ curl nie jest wystarczający do renderowania javascript, udało mi się uzyskać tylko html domyślnego kodu źródłowego. Wyrenderowana zawartość nie została pobrana. Słyszałem, że mechanik ruby ​​może wykonać tę pracę. Ale nie mam wiedzy o rubinach. Po dalszych badaniach znalazłem narzędzie wiersza poleceń: phantomjs. Jak mogę to zrobić z phantomjs?

Proszę zapytać, jakie dodatkowe informacje muszę podać.

+0

Udostępnianie badań pomaga wszystkim. Powiedz nam, co próbujesz i dlaczego nie spełnia Twoich potrzeb. To pokazuje, że poświęciłeś czas, aby spróbować pomóc sobie, to ratuje nas od powtarzania oczywistych odpowiedzi, a przede wszystkim pomaga ci uzyskać bardziej szczegółową i trafną odpowiedź! Zobacz także [jak zapytać] (http://stackoverflow.com/questions/how-to-ask) – Cerbrus

+0

Mam zaktualizowane moje pytanie z badań, które zrobiłem. –

+0

Czy używasz phantomjs tylko do pobierania treści HTML lub próbujesz pobrać ją jako obraz? Do generowania obrazu sprawdź http://phantomjs.org/screen-capture.html – jsjunkie

Odpowiedz

12

Niestety, nie jest to możliwe przy użyciu linii poleceń PhantomJS. Musisz użyć pliku Javascript, aby faktycznie osiągnąć wszystko przy pomocy PhantomJS.

Tutaj jest bardzo prosta wersja skryptu można użyć

kod najczęściej kopiowane z https://stackoverflow.com/a/12469284/4499924

printSource.js

var system = require('system'); 
var page = require('webpage').create(); 
// system.args[0] is the filename, so system.args[1] is the first real argument 
var url = system.args[1]; 
// render the page, and run the callback function 
page.open(url, function() { 
    // page.content is the source 
    console.log(page.content); 
    // need to call phantom.exit() to prevent from hanging 
    phantom.exit(); 
}); 

Aby wydrukować źródła strony na standardowe wyjście .

phantomjs printSource.js http://todomvc.com/examples/emberjs/

Aby zapisać źródło strony w pliku

phantomjs printSource.js http://todomvc.com/examples/emberjs/ > ember.html

+0

Mam nadzieję, że odpowiedziałbym na moje pytanie. Myślę, że może potrzebuję użyć skryptu, który ładuje się w mojej docelowej aplikacji zamiast tego. –

+1

Domyślam się, że to zadziała w tym konkretnym przypadku, ale rozwiązanie, które ci podałem, będzie działało dla dowolnej strony –

+1

. bardzo przydatna odpowiedź –

Powiązane problemy