Eu quero usar o PhantomJS em Python . Pesquisei esse problema no Google, mas não consegui encontrar soluções adequadas.
Acho que os.popen()
pode ser uma boa escolha. Mas não pude passar alguns argumentos para isso.
Usar subprocess.Popen()
pode ser uma solução adequada por enquanto. Quero saber se há uma solução melhor ou não.
Existe uma maneira de usar o PhantomJS em Python?
subprocess.popen
mas com alguns recursos estendidos para tornar a API perfeita.Respostas:
A maneira mais fácil de usar o PhantomJS em python é via Selenium. O método mais simples de instalação é
npm -g install phantomjs-prebuilt
Após a instalação, você pode usar o phantom tão simples quanto:
Se a variável de ambiente do caminho do sistema não estiver configurada corretamente, você precisará especificar o caminho exato como argumento para
webdriver.PhantomJS()
. Substitua isto:... com o seguinte:
Referências:
fonte
driver.page_source
.bodyStr= driver.find_element_by_tag_name("body").get_attribute("innerHTML")
e ... funcionou!O PhantomJS recentemente abandonou completamente o suporte ao Python . No entanto, o PhantomJS agora incorpora o Ghost Driver .
Um novo projeto, desde então, subiu para preencher o vazio:
ghost.py
. Você provavelmente deseja usar isso:fonte
Agora, desde que o GhostDriver vem junto com o PhantomJS, tornou-se ainda mais conveniente usá-lo através do Selenium.
Tentei a instalação de Node do PhantomJS, conforme sugerido por Pykler, mas na prática achei mais lento que a instalação independente do PhantomJS. Acho que a instalação autônoma não forneceu esses recursos anteriormente, mas a partir da v1.9, ela o faz muito.
Agora você pode usar assim
fonte
Aqui está como eu testo javascript usando PhantomJS e Django:
mobile / test_no_js_errors.js :
mobile / tests.py :
Execute testes :
manage.py test mobile
fonte
A resposta de @Pykler é ótima, mas o requisito do Nó está desatualizado. Os comentários nessa resposta sugerem a resposta mais simples, que eu coloquei aqui para economizar tempo de outras pessoas:
Instale o PhantomJS
Como @ Vivin-Paliath aponta, é um projeto independente, não faz parte do Node.
Mac:
Ubuntu:
etc
Configure um
virtualenv
(se você ainda não tiver):Se sua máquina possui o Python 2 e o 3, você pode precisar executar
virtualenv-3.6 mypy
ou algo semelhante.Instale o selênio:
Experimente um teste simples, como este emprestado dos documentos :
fonte
PhantomJS
no Windows? Parece não funcionar usando opip
comandoé isso que eu faço, python3.3. Eu estava processando enormes listas de sites, portanto, a falha no tempo limite era vital para que o trabalho fosse executado em toda a lista.
fonte
Se estiver usando o Anaconda, instale com:
no seu script:
funciona perfeitamente.
fonte
Caso esteja usando o Buildout , você pode automatizar facilmente os processos de instalação descritos pelo Pykler usando a receita gp.recipe.node .
Essa parte instala o node.js como binário (pelo menos no meu sistema) e depois usa o npm para instalar o PhantomJS. Finalmente, ele cria um ponto de entrada
bin/phantomjs
, com o qual você pode chamar o driver da web PhantomJS. (Para instalar o Selenium, você precisa especificá-lo nos requisitos do seu ovo ou na configuração do Buildout.)fonte
gp.recipe.phantomjs
, que configuraphantomjs
ecasperjs