Saya ingin menggunakan PhantomJS dengan Python . Saya mencari masalah ini di Google tetapi tidak menemukan solusi yang tepat.
Saya menemukan os.popen()
mungkin pilihan yang bagus. Tapi saya tidak bisa memberikan beberapa argumen padanya.
Menggunakan subprocess.Popen()
mungkin merupakan solusi yang tepat untuk saat ini. Saya ingin tahu apakah ada solusi yang lebih baik atau tidak.
Apakah ada cara untuk menggunakan PhantomJS dengan Python?
subprocess.popen
tetapi dengan beberapa fitur tambahan untuk membuat apinya mulus.Jawaban:
Cara termudah untuk menggunakan PhantomJS dalam python adalah melalui Selenium. Metode instalasi yang paling sederhana adalah
npm -g install phantomjs-prebuilt
Setelah instalasi, Anda dapat menggunakan hantu sesederhana:
Jika variabel lingkungan jalur sistem Anda tidak disetel dengan benar, Anda harus menentukan jalur yang tepat sebagai argumen
webdriver.PhantomJS()
. Ganti ini:... dengan yang berikut ini:
Referensi:
sumber
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
dan ... itu berhasil!PhantomJS baru-baru ini menjatuhkan dukungan Python sama sekali. Namun, PhantomJS sekarang menyematkan Driver Hantu .
Karena A proyek baru telah melangkah untuk mengisi kekosongan:
ghost.py
. Anda mungkin ingin menggunakannya:sumber
Sekarang karena GhostDriver dibundel dengan PhantomJS, bahkan menjadi lebih nyaman untuk menggunakannya melalui Selenium.
Saya mencoba instalasi Node dari PhantomJS, seperti yang disarankan oleh Pykler, tetapi dalam praktiknya saya menemukan itu lebih lambat daripada instalasi mandiri PhantomJS. Saya kira instalasi mandiri tidak menyediakan fitur-fitur ini sebelumnya, tetapi pada v1.9, sangat banyak yang melakukannya.
Sekarang Anda bisa menggunakan seperti ini
sumber
Inilah cara saya menguji javascript menggunakan PhantomJS dan Django:
mobile / test_no_js_errors.js :
ponsel / tests.py :
Jalankan tes :
manage.py test mobile
sumber
The jawaban dengan @Pykler besar tetapi kebutuhan Node sudah usang. Komentar dalam jawaban itu menyarankan jawaban yang lebih sederhana, yang saya taruh di sini untuk menghemat waktu orang lain:
Instal PhantomJS
Seperti yang ditunjukkan oleh @ Vivin-Paliath, ini adalah proyek mandiri, bukan bagian dari Node.
Mac:
Ubuntu:
dll
Siapkan
virtualenv
(jika Anda belum):Jika mesin Anda memiliki Python 2 dan 3, Anda mungkin harus menjalankan
virtualenv-3.6 mypy
atau serupa.Instal selenium:
Coba tes sederhana, seperti ini yang dipinjam dari dokumen :
sumber
PhantomJS
di windows? Tampaknya tidak berfungsi menggunakanpip
perintah.ini yang saya lakukan, python3.3. Saya sedang memproses daftar situs yang sangat besar, sehingga gagal pada batas waktu sangat penting bagi pekerjaan untuk menelusuri seluruh daftar.
sumber
Jika menggunakan Anaconda, instal dengan:
dalam skrip Anda:
bekerja dengan sempurna.
sumber
Jika Anda menggunakan Buildout , Anda dapat dengan mudah mengotomatiskan proses instalasi yang dijelaskan Pykler menggunakan resep gp.recipe.node .
Bagian itu menginstal node.js sebagai biner (setidaknya di sistem saya) dan kemudian menggunakan npm untuk menginstal PhantomJS. Akhirnya ia menciptakan titik masuk
bin/phantomjs
, yang bisa Anda sebut sebagai webdriver PhantomJS. (Untuk menginstal Selenium, Anda perlu menentukannya dalam persyaratan telur Anda atau dalam konfigurasi Buildout.)sumber
gp.recipe.phantomjs
, yang mengkonfigurasiphantomjs
dancasperjs