como obter valor de passagens aéreas utilizando python?

1,159 views
Skip to first unread message

Fábio Barrionuevo

unread,
May 7, 2012, 9:45:25 AM5/7/12
to python...@googlegroups.com
Bom dia pessoal.

A situação é a seguinte.
Eu QUERO, e pretendo fazer o máximo para conseguir ir na PythonBrasil[8] que acontecerá em novembro 2012, no Rio de Janeiro.
A hospedagem eu já consegui.
Agora me falta as passagens de Avião(Palmas-TO-RIO,RIO-Palmas-TO), grana para a inscrição, e grana para outras coisa(onibus, taxi, comer, etc), espero eu, que até novembro já tenha conseguido toda grana necessária.

Para as passagens de avião, estou tentando fazer um programa python para obter valor de passagens aéreas de sites como [1][2][3], verificar se o valor esta dentro
do valor que eu posso pagar,(semana passada houve uma promoção relâmpago de R$25, e eu não fiquei sabendo), e caso sim, mande um e-mail para mim, ou no futuro, quem sabe um SMS.

Para obter os valores, tentei utilizar o mechanize[4], urllib[5], urllib2[6], mas, no momento, ainda não obtive sucesso.
O problema que me deparei é que, nos três sites, os valores das passagens são carregados dinamicamente com javascript após o carregamento do HTML básico da pagina.

Não consegui fazer nenhuma das libs [4][5][6], processar o javascript, para posteriormente conseguir extrair os valores das passagens do HTML.
Alguém poderia me dar uma ajuda.
Ou melhor, alguém conhece ou possui algum programa python que faça essa extração de dados?


Obrigado a todos.
Paz.

[1]http://www.submarinoviagens.com.br/
[2]http://www.decolar.com/
[3]http://www.viajanet.com.br/
[4]http://wwwsearch.sourceforge.net/mechanize/
[5]http://docs.python.org/library/urllib.html
[6]http://docs.python.org/library/urllib2.html

--
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul

paulo alem

unread,
May 7, 2012, 9:55:30 AM5/7/12
to python...@googlegroups.com

Acho que só com selenium. Vi também essa lib aqui semana passada mas não cheguei a testar http://jeanphix.me/Ghost.py/
Mas sinceramente acho que é mais fácil você pegar o feed de um site tipo o melhores destinos e ficar monitorando os posts de promoção.
Não acho viável você ficar entrando nesses sites e ficar procurando um vôo barato, muitas possibilidades e muitas variáveis envolvidas nessas promoções, tipo horário, período mínimo de estadia e etc.

--
------------------------------------
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

George Ribeiro

unread,
May 7, 2012, 9:55:48 AM5/7/12
to python...@googlegroups.com
Cara, tente o splinter [1], por usar um browser (como o firefox) acredito que ele processe javascript.

Henrique Bastos

unread,
May 7, 2012, 9:56:57 AM5/7/12
to python...@googlegroups.com, python...@googlegroups.com
Tenta usar a lib requests.

[]'s,
--
Henrique Bastos
+55 21 9618-6180

Rodrigo 'Skhaz' Delduca

unread,
May 7, 2012, 10:02:47 AM5/7/12
to python...@googlegroups.com

Matheus Lima

unread,
May 7, 2012, 10:07:23 AM5/7/12
to python...@googlegroups.com
Tem uma dupla que eu acho fantástica: Beautiful Soup e Selenium.

O Selenium pode simular um navegador web, inclusive processando javascript, ou até mesmo abrir o seu navegador web e fazer qualquer coisa, como se fosse um usuário navegando. (mover cursor, colocar sobre elementos, preencher formulários, pegar html, retornar valores de elementos, etc.

Já o Soup, lê as páginas, porém não processa o javascript (ou não processava quando eu utilizei).

Eu sempre utilizei os dois, porque o Selenium é melhor pra interagir com  o site; e com o resultado da interação (HTML) eu utilizo o Soup pra fazer buscas, pois o Soup é muito mais simples e fácil pra fazer busca.

:)

Também já utilizei o Mechanize junto com o Soup. Quando eu queria simular um navegador web (pois tinha sites que apresentava conteúdo diferente por navegador). Com o Mechanize eu conseguia simular acesso via firefox, chrome, etc. Depois utilizava o Soup pra fazer buscas no html.


A vantagem de utilizar o Selenium é que você pode fazer qualquer coisa que faria navegando com um browser. A desvantagem é que ele consome muito mais recurso que o Mechanize.

Espero que tenha ajudado. :)

--
------------------------------------
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



--
Att,

Matheus dos Santos Lima        
Bel. em Sistemas de Informação - UFS (2011.2)

Rodrigo 'Skhaz' Delduca

unread,
May 7, 2012, 10:15:13 AM5/7/12
to python...@googlegroups.com
Outra alternativa seria usar o QWebView do PySide[1], é praticamente
um navegador "completo", com suporte a JavaScript, e em conjunto com o
QWebElement[2], fazer o que bem entender :)

QWebElement button = document.findFirst("input[type=submit]");
button.evaluateJavaScript("this.click()");

[1] - http://www.pyside.org/
[2] - http://qt-project.org/doc/qt-4.8/qwebelement.html

2012/5/7 Matheus Lima <mathe...@gmail.com>
> Bel. em Sistemas de Informação - UFS (2011.2)
> CSM
>
> --
> ------------------------------------
> 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




--
http://nullonerror.appspot.com/

CBM

unread,
Jul 27, 2012, 11:37:58 AM7/27/12
to python...@googlegroups.com
Ola Fábio,

 Você conseguiu fazer o programa em Pytthon para pegar os dados da passagem ?

 Se sim, que solução utilizou ?

abs
Carlo

Douglas Camata

unread,
Jul 27, 2012, 1:16:30 PM7/27/12
to python...@googlegroups.com
Você pode usar o Splinter[0] com o drive do Chrome ou Firefox para navegar nos sites e rodar os javascripts deles.

[]s


2012/7/27 CBM <carlo....@gmail.com>

--
------------------------------------
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



--
Douglas Camata
Graduando em Ciência da Computação (UENF)

Skype: douglas_camata
-----------------------------------
Linux User #509211

Bruno Rocha

unread,
Jul 27, 2012, 1:17:34 PM7/27/12
to python...@googlegroups.com
Esses dias fiz algo parecido, mas foi para pegar dados médicos..

marcelo

unread,
Jul 27, 2012, 3:15:08 PM7/27/12
to python...@googlegroups.com

 

Tente usar o Selenium

 

Testei aqui usando da IDE do Firefox e funcionou.

 

Tem como fazer ele tirar print da tela e até salvar o html gerado

---------------------------------------------------------------------------------------------------------------------------------------------------------------

Copie o código abaixo e salve como arquivo.html e abra através da IDE. Apartir dela vc exportar para pythohn

 

[Os.: Primeira vez que respondo uma dúvida, espero ter ajudado]

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head profile="http://selenium-ide.openqa.org/profiles/test-case">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<link rel="selenium.base" href="http://www.submarinoviagens.com.br/" />

<title>consultar passagem</title>

</head>

<body>

<table cellpadding="1" cellspacing="1" border="1">

<thead>

<tr><td rowspan="1" colspan="3">consultar passagem</td></tr>

</thead><tbody>

<tr>

            <td>open</td>

            <td>/</td>

            <td></td>

</tr>

<tr>

            <td>type</td>

            <td>id=MotorHomeSub_MotorAereo_txtCidadeOrigem</td>

            <td>Sao Paulo / SP, Brasil, Congonhas (CGH)</td>

</tr>

<tr>

            <td>type</td>

            <td>id=MotorHomeSub_MotorAereo_txtCidadeDestino</td>

            <td>Rio de Janeiro / RJ, Brasil, Todos os aeroportos (RIO)</td>

</tr>

<tr>

            <td>click</td>

            <td>css=label.site-form-txt-12</td>

            <td></td>

</tr>

<tr>

            <td>type</td>

            <td>id=MotorHomeSub_MotorAereo_txtDataIda</td>

            <td>18/11/2012</td>

</tr>

<tr>

            <td>type</td>

            <td>id=MotorHomeSub_MotorAereo_txtDataVolta</td>

            <td>24/11/2012</td>

</tr>

<tr>

            <td>click</td>

            <td>id=MotorHomeSub_MotorAereo_ibtnPesquisar</td>

            <td></td>

</tr>

 

</tbody></table>

</body>

</html>

 


--

Reply all
Reply to author
Forward
0 new messages