Pergunta

supor, eu preciso executar um conjunto de procedimento em um determinado site digamos, preencher alguns formulários, clique no botão enviar, enviar a voltar dados para o servidor, receber a resposta, mais uma vez fazer algo com base na resposta e enviar a voltar dados para o servidor do site. Eu sei que há um módulo webbrowser em python, mas eu quero fazer isso sem invocar qualquer navegador web. Ele tens de ser um script puro.

Existe um módulo disponível em python, que pode me ajudar a fazer isso?
graças

Foi útil?

Solução

Você também pode dar uma olhada em mecanizar . Seu significado alça "stateful navegação programático web" (de acordo com seu site).

Outras dicas

selênio vai fazer exatamente o que você quer e ele lida com JavaScript

Todas as respostas são de idade, eu recomendo e eu sou um grande fã de solicita

De página:

módulo urllib2 padrão do Python fornece a maior parte do HTTP capacidades que você precisa, mas a API é completamente quebrado. Foi construído para um tempo diferente - e uma web diferente. Ela exige uma enorme quantidade de trabalho (mesmo substitui o método) para executar o mais simples de tarefas.

As coisas não deveriam ser assim. Não em Python.

Eu acho que as melhores soluções é a mistura de e BeautifulSoup , eu só queria atualizar a questão para que possa ser mantido atualizado.

http://www.seleniumhq.org/ é a melhor solução para mim. você pode codificá-lo com python, java, ou linguagem de programação que quiser com facilidade. e fácil de simulação que converter em programa.

Há uma abundância de construído em módulos python que ajuda Whould com isso. Por exemplo urllib e htmllib .

O problema será mais simples se você mudar a maneira como você está se aproximando dele. Você diz que quer "preencher alguns formulários, clique no botão enviar, enviar a voltar dados para o servidor, receberá a resposta", que soa como um processo de quatro fases.

Na verdade, o que você precisa fazer é adicionar alguns dados para um servidor web e obter uma resposta.

Isto é tão simples como:

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()

(exemplo retirado dos docs urllib).

O que você faz com a resposta depende da complexidade do HTML é eo que você quer fazer com ele. Você pode começar afastado com analisá-lo usando uma expressão regular ou dois, ou você pode usar a classe htmllib.HTMLParser, ou analisador talvez um nível superior mais flexível como Beautiful Soup .

Selenium2 inclui Webdriver, que tem python ligações e permite usar o driver sem cabeça HtmlUnit, ou mudar para o Firefox ou o Chrome para depuração gráfica.

Não se esqueça zope.testbrowser que é invólucro em torno de mecanizar

zope.testbrowser fornece um navegador programável web de fácil utilização com foco especial em teste.

A melhor solução que eu encontrei (e actualmente a implementar) é: - scripts em Python usando selênio Webdriver - PhantomJS sem cabeça navegador (se o Firefox é usado você terá uma GUI e será mais lento)

HtmlUnit é o pacote se você for um desenvolvedor java. http://htmlunit.sourceforge.net/apidocs/index.html

Eu encontrei o iMacros Firefox plug-in (que é gratuito) para o trabalho muito bem.

Pode ser automatizado com Python usando interfaces de objetos COM do Windows. Aqui está um código de exemplo de http://wiki.imacros.net/Python . Ela exige Python do Windows Extensões :

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()

Você provavelmente quer urllib2 . Ele pode lidar com coisas como HTTPS, cookies e autenticação. Você provavelmente também quer BeautifulSoup a ajuda de análise as páginas HTML.

Você pode ter um olhar para estes slides da última PyCon italiana (pdf): O autor listado mais da biblioteca para fazer raspagem e autoted navegar em python. assim você pode ter um olhar para ele.

Eu gosto muito sarja (que já foi sugerido), que foi desenvolvido por um dos os autores do nariz e que é especificamente destinado a testar sites.

Internet Explorer específico, mas boa:

http://pamie.sourceforge.net/

A vantagem em comparação com urllib / BeautifulSoup é que ele executa Javascript também desde que ele usa IE.

httplib2 + BeautifulSoup

Use o Firefox + Firebug + httpreplay para ver o que o javascript passa de e para o browser a partir do website. Usando httplib2 você pode essencialmente fazer o mesmo através de GET e POST

Para automação você definitivamente pode querer verificar

webbot

A sua é baseado em selênio e ofertas muito mais recursos com muito pouco código como encontrar automaticamente elementos para executar ações como clique, tipo com base nos seus parâmetros.

Seu funciona mesmo para sites com nomes e ids de classe dinamicamente em mudança.

Aqui está doc: https://webbot.readthedocs.io/

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