Chcę używać PhantomJS w Pythonie . Przejrzałem ten problem, ale nie mogłem znaleźć odpowiednich rozwiązań.
Uważam, że os.popen()
może być dobrym wyborem. Ale nie mogłem przekazać kilku argumentów.
Korzystanie subprocess.Popen()
może być na razie właściwym rozwiązaniem. Chcę wiedzieć, czy istnieje lepsze rozwiązanie, czy nie.
Czy istnieje sposób użycia PhantomJS w Pythonie?
subprocess.popen
ale z kilkoma rozszerzonymi funkcjami, dzięki którym interfejs API jest płynny.Odpowiedzi:
Najłatwiejszym sposobem użycia PhantomJS w pythonie jest użycie Selenium. Najprostsza metoda instalacji to
npm -g install phantomjs-prebuilt
Po instalacji możesz użyć fantomu tak prostego jak:
Jeśli zmienna środowiskowa ścieżki systemowej nie jest ustawiona poprawnie, musisz podać dokładną ścieżkę jako argument
webdriver.PhantomJS()
. Zamień to:... z następującymi:
Bibliografia:
źródło
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
i ... zadziałało!PhantomJS niedawno zrezygnował całkowicie z obsługi języka Python . Jednak PhantomJS zawiera teraz Ghost Driver .
Nowy projekt, ponieważ podszedł, aby wypełnić pustkę:
ghost.py
. Prawdopodobnie chcesz tego użyć:źródło
Teraz, gdy GhostDriver jest dostarczany w pakiecie z PhantomJS, korzystanie z niego za pośrednictwem Selenium stało się jeszcze wygodniejsze.
Próbowałem instalacji PhantomJS w węźle, jak sugeruje Pykler, ale w praktyce okazało się, że jest wolniejsza niż samodzielna instalacja PhantomJS. Wydaje mi się, że samodzielna instalacja nie zapewniała tych funkcji wcześniej, ale od wersji 1.9 bardzo to robi.
Teraz możesz używać w ten sposób
źródło
Oto jak testuję JavaScript w PhantomJS i Django:
mobile / test_no_js_errors.js :
mobile / tests.py :
Uruchom testy :
manage.py test mobile
źródło
Odpowiedź przez @Pykler jest wielki, ale wymóg Węzeł jest nieaktualne. Komentarze w tej odpowiedzi sugerują prostszą odpowiedź, którą tu umieściłem, aby zaoszczędzić czas innym:
Zainstaluj PhantomJS
Jak wskazuje @ Vivin-Paliath, jest to samodzielny projekt, nie będący częścią Node.
Prochowiec:
Ubuntu:
itp
Skonfiguruj
virtualenv
(jeśli jeszcze tego nie zrobiłeś):Jeśli twój komputer ma zarówno Python 2, jak i 3, może być konieczne uruchomienie
virtualenv-3.6 mypy
lub podobne.Zainstaluj selen:
Wypróbuj prosty test, taki jak ten zapożyczony z dokumentów :
źródło
PhantomJS
w systemie Windows? Nie działa przy użyciupip
polecenia.to właśnie robię, python3.3. Przetwarzałem ogromne listy witryn, więc przekroczenie limitu czasu było niezbędne, aby zadanie przebiegło przez całą listę.
źródło
Jeśli używasz Anacondy, zainstaluj z:
w twoim skrypcie:
działa świetnie.
źródło
Jeśli korzystasz z Buildout , możesz łatwo zautomatyzować procesy instalacji opisane przez Pykler przy użyciu receptury gp.recipe.node .
Ta część instaluje node.js jako plik binarny (przynajmniej w moim systemie), a następnie używa npm do zainstalowania PhantomJS. Wreszcie tworzy punkt wejścia
bin/phantomjs
, za pomocą którego można wywołać webdriver PhantomJS. (Aby zainstalować Selenium, musisz określić go w wymaganiach dotyczących jaj lub w konfiguracji Buildout).źródło
gp.recipe.phantomjs
, która konfigurujephantomjs
icasperjs