script robo

900 views
Skip to first unread message

thiago lopes ferrraz

unread,
Apr 10, 2013, 9:51:58 AM4/10/13
to python...@googlegroups.com

Comecei a fazer o robo com o script abaixo e quando printei na tela ele acabou um formulário ,parece que eu acabei printando o próprio formulaio de login.Mas o que eu queria era logar na página e exibir a pagina interna para depois naveganar nela.  
Estou olhando alguns exemplos no http://wwwsearch.sourceforge.net/mechanize/
mas eles não estão me dizendo muita coisa ,se alguem souber onde tenha alguma documentação mais completa ou me dar uma luz para eu proseguir na minha pesquisa,nunca fiz algo parecido antes.

# -*- coding: utf-8 -*- 
import mechanize
import cookielib
from BeautifulSoup import BeautifulSoup

#cria um navegador, um browser de codigo...
br = mechanize.Browser()

email = 'login'
senha = 'senha'

# Prepara para tratar cookies...
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Ajusta algumas opções do navegador...
br.set_handle_equiv(True)
br.set_handle_gzip(False)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Configura o user-agent.
# Do ponto de vista do servidor, o navegador agora o Firefox.
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11;\
 U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615\
Fedora/3.0.1-1.fc9 Firefox/3.0.1')]      
# Pronto! Agora é navegar, acessando a URL usando o método HTTP GET
br.open(url)
# Se existirem formulários, você pode selecionar o primeiro (#0), por exemplo...
br.select_form(nr=0)
# Para mostrar os formularios e ver os campos a serem preenchidos,
# use um for sobre o br.forms()
for f in br.forms():
   print f
# Preencher o formulário com os dados de login...
br.form['cod_produtor'] = email
br.form['cod_senha'] = senha
# Enviar o formulário usando o método HTTP POST
br.submit()       
# E finalmente, busque o HTML retornado:
html = br.response().read()
soup = BeautifulSoup(html)
print soup.prettify()

--
Thiago Lopes Ferraz
Desenvolvedor web
Web Developer PHP,JAVA,Python/Django
+55 (51) 8211-3142



Marcelo V. Silva

unread,
Apr 10, 2013, 9:56:21 AM4/10/13
to python...@googlegroups.com
Já pensou em usar o Selenium?


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Marcelo V. Silva

thiago lopes ferrraz

unread,
Apr 10, 2013, 10:04:24 AM4/10/13
to python...@googlegroups.com
Eu queria fazer um script que log,entre na área restria acesse um link que leva pra um formulario onde prencherei ele e farei uma pesquisa e eu quero salvar os resultados dessa pesquisa,na verdade não tenho escolha pela ferramenta só achei que seria mais facil com mechanize,até poderia usar selenium,acho que eu ja consegui logar no mechanize usando meu script só que quando eu imprimi na tela o response ele mostrou um formalario e não o html da página de aréa restrita,isso que eu não consegui entender

Marcelo V. Silva

unread,
Apr 10, 2013, 10:41:47 AM4/10/13
to python...@googlegroups.com
Vou tentar achar em casa um script que testei do selenium que tirava print.

Mas isso só no final do dia. Até lá espero que alguém tenha uma solução melhor

thiago lopes ferrraz

unread,
Apr 10, 2013, 10:46:20 AM4/10/13
to python...@googlegroups.com
to dando uma pesquisada no selenium agora,até por que o site ta utilizando javascript e com o mechanize não vai ser possível,eu qro fazer os seguintes passos:

logar
ler a página da area restrita
clicar no link
preencher formulario
e coletar as resposta

se eu achar uma solução vou postar ela

thiago lopes ferrraz

unread,
Apr 10, 2013, 1:01:53 PM4/10/13
to python...@googlegroups.com
olhei a documentação do scrapy vou fazer o codigo por ele em vez de usar o mechanize,alguem tem uma outra sugestão?

Alexandre Silva

unread,
Apr 10, 2013, 1:15:48 PM4/10/13
to python...@googlegroups.com
Thiago,

Provavelmente no mechanize você não está conseguindo logar. 
Imagine navegando normalmente no browser. Se você entrar na página e não conseguir logar (ou usuario errado, ou senha errada ou qualquer outro problema) normalmente você é redirecionado para a mesma página (de login).
Isso deve estar acontecendo com você.

No seu código quando você faz:
br.select_form(nr=0)

Você está escolhendo o primeiro formulário da página (que pode não ser o formulário que você está querendo.

Por isso se faz um:
for f in br.forms():
   print f

Para ver quantos forms há na pagína.

Se precisar alterar para o segundo formulário da página:
br.select_form(nr=1)

Abs,





Você es

# Para mostrar os formularios e ver os campos a serem preenchidos,
# use um for sobre o br.forms()
for f in br.forms():
   print f


2013/4/10 thiago lopes ferrraz <xtlf...@gmail.com>

Vinicius Assef

unread,
Apr 10, 2013, 1:29:15 PM4/10/13
to python...@googlegroups.com
http://splinter.cobrateam.info/


Desenvolvida por brasileiros.

2013/4/10 thiago lopes ferrraz <xtlf...@gmail.com>:

thiago lopes ferrraz

unread,
Apr 10, 2013, 2:16:15 PM4/10/13
to python...@googlegroups.com
Alexandre verifiquei e o login é o primeiro forma da página
Reply all
Reply to author
Forward
0 new messages