Pergunta

Eu estou tentando escrever um Web Bot baseado em Python que pode ler e interpretar uma página HTML, em seguida, executar uma função onClick e receber a nova página HTML resultante. Já posso ler a página HTML e posso determinar as funções a serem chamados pelo comando onclick, mas não tenho idéia de como executar essas funções ou como receber o código HTML resultante.

Todas as idéias?

Foi útil?

Solução

A única ferramenta em Python para Javascript, que estou ciente de python-spidermonkey . Eu nunca usei-o embora.

Com Jython você poderia (ab-) uso HttpUnit .

Editar : se esqueceu de que você pode usar Scrapy . Ele suporta Javascript através de Macaco-Aranha, e você ainda pode usar o Firefox para rastrear a web.

Editar 2 : Recentemente, eu me encontrar usando automação navegador mais e mais para tais tarefas graças a algumas excelentes bibliotecas. QtWebKit ofertas de acesso completo para um navegador WebKit, que pode ser usado em Python, graças a ligações de linguagem ( PySide ou PyQt ). Parece haver bibliotecas semelhantes e ligações para Gtk + que eu não tenha tentado. selênio WebDriver API também funciona muito bem e tem uma comunidade ativa.

Outras dicas

Bem, obviamente, python não vai interpretar o JS para você (embora possa haver módulos lá fora, que pode). Acho que você precisa para converter as instruções JS para transformações equivalentes em Python.

Suponho ElementTree ou BeautifulSoup seria bom pontos de partida para interpretar a estrutura HTML.

Para executar JavaScript, você precisa fazer muito mais do que um navegador web completo faz, exceto para a renderização. Em particular, você precisa de um interpretador de JavaScript, além de o interpretador Python.

Um ponto de partida poderia ser python-spidermonkey . Dependendo do específico JavaScript, você pode ter que fornecer uma API boa DOM ao spidermonkey, além de fornecer uma implementação XmlHttpRequest.

Você pode tentar alavancagem V8 ,

V8 é open source do Google, de alto desempenho motor de JavaScript. Ele é escrito em C ++ e é usado no Google Chrome, navegador do Google código aberto.

chamá-lo de Python pode não ser simples, sem uma estrutura para fornecer o DOM. Pyjamas tem um projecto experimental, Pijama desktop , proporcionando integração V8 para execução Javascript.

Pyv8 é um experimentais ligações pitão V8 e um compilador pitão-JavaScript.

Para a parte do navegador deste que você pode querer olhar para Mecanizar, que basicamente é um webbrowser implementado como uma biblioteca Python. http://pypi.python.org/pypi/mechanize/0.1.11 Mas como mencionado, o texto n onClick é Javascript, e você vai precisar spidermonkey para isso.

Se você pode fazer um suporte genérico para spidermonkey em mecanizar, tenho certeza que muitas pessoas seria extremamente feliz. ;)

Mecanizar pode ser um exagero, talvez você só quer encontrar partes específicas do HTML, e depois lxml e BeautifulSoup ambos funcionam bem.

Por que você não apenas cheirar o que é enviado após o evento onclick e replicar que com o seu bot?

Para automação web, você pode olhar para " webbot " biblioteca. Faz simples autmation mínima e livre de dor.

webbot funciona mesmo para páginas com alterar dinamicamente id e nomes de classes e tem mais métodos e dispõe de selênio e mecanizar.

Aqui está um trecho de webbot

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

Docs está em: https://webbot.readthedocs.io

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top