Webkit

Witam, czy jest możliwość podpięcia pod ruby webkita bez podpinania przy okazji GTK? chodzi mi o ładowanie i renderowanie stron w pamięci komputera, dwustronną komunikację poprzez console.log i execute_script itp.

Wcześniej bawiłem się trochę na pywebkitgtk i znalazłem identyczne rozwiązanie pod ruby. Ale ciągle szukam opcji na czysty webkit bez potrzeby korzystania z bibliotek środowiska graficznego by można było kod uruchamiać na serwerach lub z konsoli :slight_smile:

Swoją drogą witam wszystkich na forum. Kodziłem począwszy od turbo pascala jakieś 7 lat temu, po c, c++, adę, coś tam z javy, pythona, java script, c#, php aż w końcu na ruby + ruby on rails. Muszę przyznać, że ruby to najwygodniejszy język w jakim mi dane było pisać. Przygodę z railsami zacząłem jakieś 2 tygodnie temu i jeszcze dużo przede mną, ale do php na pewno nie wrócę :smiley:

pzdr

Witaj.

Najprościej jednak użyć powyższego i przypiąć to do x11vnc lub xvfb. To uniezależni cię od prawdziwego xserwera.
Patrzyłem sam na opcje użycia webkita, z różnymi backendami, niestety dostosowanie samego webkita jest dosyć skomplikowane, i o wiele łątwiej pobrać “port” z QT, gtk czy po prostu wykorzystać elementy chromium.

W razie dodatkowych pytań czy wątpliwosci wal!

Zależy mi tylko na parsowaniu JavaScriptu po pobraniu strony WWW. Może być jakiś mniej wyrafinowany silnik. Wcześniej szalałem z CURLem i zatrzymałem się na jego podstawowym ograniczeniu ;] A tak webkit otworzył mi drzwiczki do wszystkiego… no może poza czytaniem tekstu z captchy. Nie mówiąc już o tym, że mamy całe przerobione drzewko DOM, bez względu na poprawność kodu (co jest dużym problemem przy parsowaniu strony jako XML). Nie mówię już o wstrzyknięciu do strony nieinwazyjnego jQuery które upraszcza nam zabawę na maksa :]

To co mam mi wystarcza w zupełności, ale o ileż ciekawiej byłoby pisanie kodu pod strony www który mógłby to wszystko robić sam, zdalnie, lub na żądanie użytkownika? coś jak wkhtmltopdf, kilka linii i mamy pdf wyrenderowany ze strony… albo wkhtmltoimg. Skoro one potrafią musi się jakoś dać ;] w każdym bądź razie jak kiedyś ktoś znajdzie rozwiązanie, albo samemu uda mi się coś takiego stworzyć wrzućmy tu tutaj, żeby już nikt nigdy nie musiał się męczyć z tym problemem

ps. próbowałem grzebać w źródłach WebKita ale za cienki w portkach jestem jeszcze, żeby to ogarnąć (no i czasu też nie ma za bardzo)

zawsze możesz zacząć od źródeł wkhtmltopdf. Generalnie z tego co wiem oni właśnie używają xvfb. renderują stronę do pamięci i zrzucają w dosyć prosty sposób przez xwd.
Ale czy tak jest to głowy nie dam - tak czy tak jest to dobry sposób.

Generalnie jeżeli chcesz się bawić w webscraping w ten sposób - to są już gotowe rozwiązania oparte o plugin do Firefox i innych przeglądarek (np. przez Selenium). Poczytaj o capybara na przykład, może to jest to co potrzebujesz.

Poczytaj sobie o testowaniu JS server side. Jest w cholere materiałów do tego, i większość da się zaadaptować do webscrapingu,

pobawię się tym pierwszym sposobem, wydaje się być tym czego szukam :slight_smile: (jak pisałem zależy mi na oprogramowaniu serwerowym, bo do zastosowań domowych mam już wszystko czego potrzebuję)

dzięki za szybką odpowiedź, wygląda na to, że macie tu sensowną grupę wsparcia dla początkujących koderów rubiego

Capybara sama w sobie nie potrafi robić screenshotów stronek. Ale możesz użyć selenium bezpośrednio (potrzebujesz gema selenium-webdriver), i to będzie odpalać okienko Firefoxa i renderować całą stronę (łącznie z Flashem itd. jeśli masz pluginy poinstalowane). Podobny kod używam w jednym komercyjnym projekcie i działa całkiem fajnie.

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://rubyonrails.org"
driver.save_screenshot "/tmp/screenshot.png"
driver.quit

Aha, do tego można użyć Xvfb oczywiście, i ustawić zmienną środowiskową DISPLAY odpowiednio.

I to normalnie będzie hulać na serwerach czy trzeba mieć do tego dedyka?

zależy jak bardzo masz upierdliwego admina. Generalnie na VPSach będzie na pewno działać.

a mam jeszcze takie małe pytanie do was, bo nie do końca rozumiem pewną sprawę. Jak ustawiamy gemy do aplikacji to czy po bundle install pobierze mi to razem z oprogramowaniem jakie jest wymagane do prawidłowego działania? np coś jest tylko nakładką na program np wkhtmltopdf, to muszę mieć ten program zainstalowany czy dociągnie mi razem z gemem i będzie działać? bo tego do końca nie trybie jeszcze

Bundler pobierze gemy. Dodatkowe oprogramowanie musisz doinstalować sam, no chyba że jest dołączone do gema.