Dúvida de regex

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

Dúvida de regex

Mesias
alguém pode me ajudar com este regex ?

preciso identificar isto (separador pode ser ponto ou espaço):

nome_qualquer.main.true
nome_qualquer.id.false
nome_qualquer.main.false
nome_qualquer.id.false
nome_qualquer.true
nome_qualquer.false

Criei este regex:
^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$

Nota que o mais importante é separar em 3 grupos, um para o nome, outro para
main ou id (que é opcional) e outro para true ou false (também opcional). O
que não gostei no regex é que tive que incluir as opções de separador em
cada item para evitar da pessoa poder escrever:

nome_qualquer..true
nome_qualquer..false

Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2 itens
de cada grupo do regex ?





--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Programmer
Skype.: meszias
Msn.:    [hidden email]
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Rodolfo S. Carvalho
Oi Mesias,

2011/4/6 Mesias <[hidden email]>

>
>
> alguém pode me ajudar com este regex ?
>
> preciso identificar isto (separador pode ser ponto ou espaço):
>
> nome_qualquer.main.true
> nome_qualquer.id.false
> nome_qualquer.main.false
> nome_qualquer.id.false
> nome_qualquer.true
> nome_qualquer.false
>
> Criei este regex:
> ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
>
> Nota que o mais importante é separar em 3 grupos, um para o nome, outro
> para
> main ou id (que é opcional) e outro para true ou false (também opcional). O
> que não gostei no regex é que tive que incluir as opções de separador em
> cada item para evitar da pessoa poder escrever:
>
> nome_qualquer..true
> nome_qualquer..false
>
>
Existe um testador de expressões regulares em python, que funciona no
browser... testa aí:

http://pyregex.appspot.com/

Ve se te dá alguma ajuda ;)


>  Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2
> itens
> de cada grupo do regex ?
>
> --
> ======================================
> Alejandro Mesias André Nebra Perez
> Java/Python/Js/Something else Programmer
> Skype.: meszias
> Msn.: [hidden email]
> Twitter: @meszias
> Linux User #442506
> Campinas - SP - Brasil - South America
> ======================================
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



--
    Rodolfo Carvalho
     Web Developer
[hidden email]


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Mesias
gosto muito deste cara:
http://regexpal.com/

<http://regexpal.com/>me mandaram a resposta em outro grupo:

*^([a-z_]+)([\.\s](?:id|main))?([\.\s](?:false|true))?$*
*
*
***tenho que aprender sobre esse ? e ?:
*
2011/4/6 Rodolfo S. Carvalho <[hidden email]>

> Oi Mesias,
>
> 2011/4/6 Mesias <[hidden email]>
>
>>
>>
>> alguém pode me ajudar com este regex ?
>>
>> preciso identificar isto (separador pode ser ponto ou espaço):
>>
>> nome_qualquer.main.true
>> nome_qualquer.id.false
>> nome_qualquer.main.false
>> nome_qualquer.id.false
>> nome_qualquer.true
>> nome_qualquer.false
>>
>> Criei este regex:
>> ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
>>
>> Nota que o mais importante é separar em 3 grupos, um para o nome, outro
>> para
>> main ou id (que é opcional) e outro para true ou false (também opcional).
>> O
>> que não gostei no regex é que tive que incluir as opções de separador em
>> cada item para evitar da pessoa poder escrever:
>>
>> nome_qualquer..true
>> nome_qualquer..false
>>
>>
> Existe um testador de expressões regulares em python, que funciona no
> browser... testa aí:
>
> http://pyregex.appspot.com/
>
> Ve se te dá alguma ajuda ;)
>
>
>>  Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2
>> itens
>> de cada grupo do regex ?
>>
>> --
>> ======================================
>> Alejandro Mesias André Nebra Perez
>> Java/Python/Js/Something else Programmer
>> Skype.: meszias
>> Msn.: [hidden email]
>> Twitter: @meszias
>> Linux User #442506
>> Campinas - SP - Brasil - South America
>> ======================================
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>  
>>
>
>
>
> --
>     Rodolfo Carvalho
>      Web Developer
> [hidden email]
>



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Programmer
Skype.: meszias
Msn.:    [hidden email]
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Bruno Tikami
2011/4/6 Mesias <[hidden email]>

>
>
> gosto muito deste cara:
> http://regexpal.com/
>
> <http://regexpal.com/>me mandaram a resposta em outro grupo:
>
> *^([a-z_]+)([\.\s](?:id|main))?([\.\s](?:false|true))?$*
> *
> *
> ***tenho que aprender sobre esse ? e ?:
>

Olá Messias,

eu não conhecia este testador de regex mas pelo que vi ele é para
javascript, não ? A vantagem de usar o pyregex.appspot.com - na minha opnião
- é que na hora de implantar a regex você não vai ter nenhuma surpresa  pois
ele já usa a implementação de regex do Python (bem como as flags que você
pode usar).

Quanto a aprender mais sobre regex, não conheço opção mais didática que o
Piazinho do Aurélio [0]

Aproveitando, Rodolfo, obrigado pelo pyregex, uso sempre e é muito útil.

[0] http://www.piazinho.com.br/

[]s

Tkm


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Alexandre Machado
In reply to this post by Mesias
Opa...

Vc. conhece o KODOS... é um editor de expressões regulares para Python
que tem um debugger muito legal... vc. consegue, à medida que vai
digitando sua expressão regular, acompanhar que trechos do texto estão
casando com a expressão ou não.

Uma forma mais simples de especificar sua regex pode ser:

(^[\w]+)(\.(id|main)){0,1}(.(true|false))

Os grupos que te interessam são o 1, 3 e 5.

Alexandre

Em Qua, 2011-04-06 às 08:56 -0300, Mesias escreveu:

>  
> alguém pode me ajudar com este regex ?
>
> preciso identificar isto (separador pode ser ponto ou espaço):
>
> nome_qualquer.main.true
> nome_qualquer.id.false
> nome_qualquer.main.false
> nome_qualquer.id.false
> nome_qualquer.true
> nome_qualquer.false
>
> Criei este regex:
> ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
>
> Nota que o mais importante é separar em 3 grupos, um para o nome,
> outro para
> main ou id (que é opcional) e outro para true ou false (também
> opcional). O
> que não gostei no regex é que tive que incluir as opções de separador
> em
> cada item para evitar da pessoa poder escrever:
>
> nome_qualquer..true
> nome_qualquer..false
>
> Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2
> itens
> de cada grupo do regex ?
>
> --
> ======================================
> Alejandro Mesias André Nebra Perez
> Java/Python/Js/Something else Programmer
> Skype.: meszias
> Msn.: [hidden email]
> Twitter: @meszias
> Linux User #442506
> Campinas - SP - Brasil - South America
> ======================================
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Leonardo Santagada
In reply to this post by Mesias
eu usaria algo como ([^ .]+)([ .][^ .]*){0,2}

e faz o resto da validação depois, parece mais simples que tentar
enfiar tudo na regex.

2011/4/6 Mesias <[hidden email]>:

> alguém pode me ajudar com este regex ?
>
> preciso identificar isto (separador pode ser ponto ou espaço):
>
> nome_qualquer.main.true
> nome_qualquer.id.false
> nome_qualquer.main.false
> nome_qualquer.id.false
> nome_qualquer.true
> nome_qualquer.false
>
> Criei este regex:
> ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
>
> Nota que o mais importante é separar em 3 grupos, um para o nome, outro para
> main ou id (que é opcional) e outro para true ou false (também opcional). O
> que não gostei no regex é que tive que incluir as opções de separador em
> cada item para evitar da pessoa poder escrever:
>
> nome_qualquer..true
> nome_qualquer..false
>
> Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2 itens
> de cada grupo do regex ?
>
>
>
>
>
> --
> ======================================
> Alejandro Mesias André Nebra Perez
> Java/Python/Js/Something else Programmer
> Skype.: meszias
> Msn.:    [hidden email]
> Twitter: @meszias
> Linux User #442506
> Campinas - SP - Brasil - South America
> ======================================
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
> Links do Yahoo! Grupos
>
>
>



--
Leonardo Santagada
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Alexandre Machado
Olá, Leonardo

Discordo da sua abordagem... uma das coisas mais legais das expressões
regulares é poder validar coisas relativamente complexas sem precisar
escrever muito código e, ainda assim, tendo uma implementação bastante
otimizada.

Concordo que, para quem não tem prática com elas, a sintaxe pode não
parecer muito legível, mas vale o esforço.

Uma coisa que a minha experiência com expressões regulares me ensinou é
que, uma vez que a expressão está funcionando, quase sempre tem espaço
para simplificá-la e torná-la mais legível.

Alexandre

Em Qua, 2011-04-06 às 10:53 -0300, Leonardo Santagada escreveu:

>  
> eu usaria algo como ([^ .]+)([ .][^ .]*){0,2}
>
> e faz o resto da validação depois, parece mais simples que tentar
> enfiar tudo na regex.
>
> 2011/4/6 Mesias <[hidden email]>:
> > alguém pode me ajudar com este regex ?
> >
> > preciso identificar isto (separador pode ser ponto ou espaço):
> >
> > nome_qualquer.main.true
> > nome_qualquer.id.false
> > nome_qualquer.main.false
> > nome_qualquer.id.false
> > nome_qualquer.true
> > nome_qualquer.false
> >
> > Criei este regex:
> > ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
> >
> > Nota que o mais importante é separar em 3 grupos, um para o nome,
> outro para
> > main ou id (que é opcional) e outro para true ou false (também
> opcional). O
> > que não gostei no regex é que tive que incluir as opções de
> separador em
> > cada item para evitar da pessoa poder escrever:
> >
> > nome_qualquer..true
> > nome_qualquer..false
> >
> > Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos
> 2 itens
> > de cada grupo do regex ?
> >
> >
> >
> >
> >
> > --
> > ======================================
> > Alejandro Mesias André Nebra Perez
> > Java/Python/Js/Something else Programmer
> > Skype.: meszias
> > Msn.:    [hidden email]
> > Twitter: @meszias
> > Linux User #442506
> > Campinas - SP - Brasil - South America
> > ======================================
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > Python-Brasil
> > http://www.python.org.br/wiki/AntesDePerguntar
> > Links do Yahoo! Grupos
> >
> >
> >
>
> --
> Leonardo Santagada
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Victor Fontes
In reply to this post by Leonardo Santagada
Como os colegas aparentemente já responderam a dúvida, vou colaborar com uma dica:

Existe uma biblioteca python chamada Reverb que facilita e muito a construção de regex. Todo programador deve dominar expressões regulares, porém para questões pontuais eu gosto de usar essa biblioteca, que deixa o código bem mais legível:

A documentação:
http://www.fiber-space.de/reverb2/reverb-doc/index.html

Um post que fiz muito tempo atrás:
http://victorfontes.com/2010/03/expressoes-regulares-legiveis-com-python/

[]s
--
Victor Fontes - about.me/victorfontes

On quarta-feira, 6 de abril de 2011 at 10:53, Leonardo Santagada wrote:

> eu usaria algo como ([^ .]+)([ .][^ .]*){0,2}
>
>  e faz o resto da validação depois, parece mais simples que tentar
>  enfiar tudo na regex.
>
>  2011/4/6 Mesias <[hidden email]>:
> > alguém pode me ajudar com este regex ?
> >
> > preciso identificar isto (separador pode ser ponto ou espaço):
> >
> > nome_qualquer.main.true
> > nome_qualquer.id.false
> > nome_qualquer.main.false
> > nome_qualquer.id.false
> > nome_qualquer.true
> > nome_qualquer.false
> >
> > Criei este regex:
> > ^([a-z_]*)([\.\s]id|[\.\s]main){0,1}([\.\s]false|[\.\s]true){0,1}$
> >
> > Nota que o mais importante é separar em 3 grupos, um para o nome, outro para
> > main ou id (que é opcional) e outro para true ou false (também opcional). O
> > que não gostei no regex é que tive que incluir as opções de separador em
> > cada item para evitar da pessoa poder escrever:
> >
> > nome_qualquer..true
> > nome_qualquer..false
> >
> > Tem alguma forma melhor de fazer ? ou tem necessidade de repetir nos 2 itens
> > de cada grupo do regex ?
> >
> >
> >
> >
> >
> > --
> > ======================================
> > Alejandro Mesias André Nebra Perez
> > Java/Python/Js/Something else Programmer
> > Skype.: meszias
> > Msn.: [hidden email]
> > Twitter: @meszias
> > Linux User #442506
> > Campinas - SP - Brasil - South America
> > ======================================
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> > Python-Brasil
> > http://www.python.org.br/wiki/AntesDePerguntar
> > Links do Yahoo! Grupos
> >
> >
> >
>
>  --
>  Leonardo Santagada
>  



[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Paulo Eduardo Neves-3
In reply to this post by Mesias
2011/4/6 Mesias <[hidden email]>
>
> *^([a-z_]+)([\.\s](?:id|main))?([\.\s](?:false|true))?$*
> *
> *
> ***tenho que aprender sobre esse ? e ?:

O (?:  é um operador que te permite usar parênteses sem que os dados
que casaram apareçam nos grupos.

Note que o ponto ou espaço que separam os grupos estarão nos grupos
retornados, isto é, você terá ".main" e ".false". Talvez seja o caso
de mudar os parênteses que não agrupam.

Outra coisa é que vc não precisa fazer o escape do ponto dentro dos colchetes.

Neste caso, talvez seu código ficasse mais claro se você usasse a
função split. Como pode separar com espaço ou ponto, pode até ser a
split do módulo re:
In [29]: re.split('[. ]', 'a b.c')
Out[29]: ['a', 'b', 'c']

[]s
--
Paulo Eduardo Neves
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Mesias
Na verdade não. De forma alguma. Pois necessariamente preciso do main/id e
do true/false nessa ordem e separados por pontos ou espaços.

Um motivo é para validar o que a pessoa digitou pois isso tem um
processamento posterior, facilita a programação pois por ter apenas 3 ( )
quando pego por grupos os 3 valores que utilizo vêm adequados ao que
preciso. Depois posto o código do que fiz.

Na verdade usei esse regex no java. Como regex é algo universal, não achei
ruim perguntar na lista de Python. Importante que eu estava validando e
agrupando o conteúdo que eu precisava com o regex.

2011/4/6 Paulo Eduardo Neves <[hidden email]>

>
>
> 2011/4/6 Mesias <[hidden email]>
> >
> > *^([a-z_]+)([\.\s](?:id|main))?([\.\s](?:false|true))?$*
> > *
> > *
> > ***tenho que aprender sobre esse ? e ?:
>
> O (?:  é um operador que te permite usar parênteses sem que os dados
> que casaram apareçam nos grupos.
>
> Note que o ponto ou espaço que separam os grupos estarão nos grupos
> retornados, isto é, você terá ".main" e ".false". Talvez seja o caso
> de mudar os parênteses que não agrupam.
>
> Outra coisa é que vc não precisa fazer o escape do ponto dentro dos
> colchetes.
>
> Neste caso, talvez seu código ficasse mais claro se você usasse a
> função split. Como pode separar com espaço ou ponto, pode até ser a
> split do módulo re:
> In [29]: re.split('[. ]', 'a b.c')
> Out[29]: ['a', 'b', 'c']
>
> []s
> --
> Paulo Eduardo Neves
>
>  
>



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Programmer
Skype.: meszias
Msn.:    [hidden email]
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Leonardo Santagada
2011/4/6 Mesias <[hidden email]>:
> Na verdade usei esse regex no java. Como regex é algo universal, não achei
> ruim perguntar na lista de Python. Importante que eu estava validando e
> agrupando o conteúdo que eu precisava com o regex.

Regex não é universal, cada linguagem (ou pelo menos várias)
implementam regex de forma diferente.

Eu usaria com certeza o split do regex que o paulo eduardo falou e
depois processaria cada pedaço separadamente. Mas né se eu estivesse
no python. No java eu respiraria fundo, e antes de mais nada ia ver se
não vale a pena usar jython :).

--
Leonardo Santagada
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Leonardo Santagada
In reply to this post by Alexandre Machado
2011/4/6 Alexandre Machado <[hidden email]>:

> Discordo da sua abordagem... uma das coisas mais legais das expressões
> regulares é poder validar coisas relativamente complexas sem precisar
> escrever muito código e, ainda assim, tendo uma implementação bastante
> otimizada.
>
> Concordo que, para quem não tem prática com elas, a sintaxe pode não
> parecer muito legível, mas vale o esforço.
>
> Uma coisa que a minha experiência com expressões regulares me ensinou é
> que, uma vez que a expressão está funcionando, quase sempre tem espaço
> para simplificá-la e torná-la mais legível.

A minha experiencia é que elas sempre tem um furo que acaba aparecendo
anos depois da regex escrita, e que geralmente para consertar o furo
tu tem que desmontar a regex em pedaços e reescreve-la, o q acontece
também quando tu tem que extender uma regex.

Outra coisa é o mito da performance, regex em quase todas as
linguagens são lentas, e especialmente em python perdem de longe para
processamento de string tipo o comparador in, ==, e as funções split e
strip.

As pessoas geralmente acham que regex são implementadas com DFA mas na
verdade eu só conheço duas libs (uma em c e outra em rpython) que usam
realmente DFA a maioria usa um interpretador de bytecode (python,
javascript, PCRE, perl) que é mais ou menos lento.

--
Leonardo Santagada
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Leonardo Santagada
In reply to this post by Victor Fontes
2011/4/6 Victor Fontes <[hidden email]>:
> Como os colegas aparentemente já responderam a dúvida, vou colaborar com uma dica:
>
> Existe uma biblioteca python chamada Reverb que facilita e muito a construção de regex. Todo programador deve dominar expressões regulares, porém para questões pontuais eu gosto de usar essa biblioteca, que deixa o código bem mais legível:
>
> A documentação:
> http://www.fiber-space.de/reverb2/reverb-doc/index.html
>
> Um post que fiz muito tempo atrás:
> http://victorfontes.com/2010/03/expressoes-regulares-legiveis-com-python/

Wow essa reverb é bem legal, parece mesmo com pyparsing :). Se eu
gostasse desse tipo de coisa eu mexeria no rlib.parsing do pypy pra
deixar ele redondo que nem essas bibliotecas, o algoritmo que ele usa
é bem melhor do que o do pyparsing e as regex usam DFA de verdade
então o potencial para criar algo legal existe.

Valeu pela dica.

--
Leonardo Santagada
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Mesias
Legal isso do Kodos e o reverb. Vou dar uma olhada. Gostei das dicas sobre
performance também. Eu comecei um trabalho de Web Crawler (robo que acessa
internet) com o beautifulsoup e fiquei na duvida de ao inves de usar o
BeautifulSoup que faz parse da pagina inteira toda vez que se usa ele para
retirar informações da pagina, usar diretamente regex.

Grande problema que o parse do BeautifulSoup se a página não estiver
corretamente formatada acusa erro. Talvez usando regex isso seria mais
simples.

2011/4/7 Leonardo Santagada <[hidden email]>

>
>
> 2011/4/6 Victor Fontes <[hidden email]>:
>
> > Como os colegas aparentemente já responderam a dúvida, vou colaborar com
> uma dica:
> >
> > Existe uma biblioteca python chamada Reverb que facilita e muito a
> construção de regex. Todo programador deve dominar expressões regulares,
> porém para questões pontuais eu gosto de usar essa biblioteca, que deixa o
> código bem mais legível:
> >
> > A documentação:
> > http://www.fiber-space.de/reverb2/reverb-doc/index.html
> >
> > Um post que fiz muito tempo atrás:
> >
> http://victorfontes.com/2010/03/expressoes-regulares-legiveis-com-python/
>
> Wow essa reverb é bem legal, parece mesmo com pyparsing :). Se eu
> gostasse desse tipo de coisa eu mexeria no rlib.parsing do pypy pra
> deixar ele redondo que nem essas bibliotecas, o algoritmo que ele usa
> é bem melhor do que o do pyparsing e as regex usam DFA de verdade
> então o potencial para criar algo legal existe.
>
> Valeu pela dica.
>
> --
> Leonardo Santagada
>
>  
>



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Programmer
Skype.: meszias
Msn.:    [hidden email]
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Leonardo Santagada
2011/4/10 Mesias <[hidden email]>:
> Legal isso do Kodos e o reverb. Vou dar uma olhada. Gostei das dicas sobre
> performance também. Eu comecei um trabalho de Web Crawler (robo que acessa
> internet) com o beautifulsoup e fiquei na duvida de ao inves de usar o
> BeautifulSoup que faz parse da pagina inteira toda vez que se usa ele para
> retirar informações da pagina, usar diretamente regex.
>
> Grande problema que o parse do BeautifulSoup se a página não estiver
> corretamente formatada acusa erro. Talvez usando regex isso seria mais
> simples.

O que as pessoas fazem é usar o lxml http://lxml.de/ que dizem nas
ultimas versões da libxml2 o parser de html é melhor que o beautiful
soup e bem mais rápido.

--
Leonardo Santagada
Reply | Threaded
Open this post in threaded view
|

Re: Dúvida de regex

Igor-49
Você está fazendo as requisições usando a urllib mesmo? Para evitar
problemas com sites que usam javascript você pode usar o webkit que vem no
pyside. Deste jeito ele interpreta o javascript e você pode mexer no html
corrente da página (que não é, necessariamente, o mesmo que você puxou do
servidor).

[1]http://www.pyside.org/docs/pyside/PySide/QtWebKit/index.html

2011/4/10 Leonardo Santagada <[hidden email]>

>
>
> 2011/4/10 Mesias <[hidden email]>:
>
> > Legal isso do Kodos e o reverb. Vou dar uma olhada. Gostei das dicas
> sobre
> > performance também. Eu comecei um trabalho de Web Crawler (robo que
> acessa
> > internet) com o beautifulsoup e fiquei na duvida de ao inves de usar o
> > BeautifulSoup que faz parse da pagina inteira toda vez que se usa ele
> para
> > retirar informações da pagina, usar diretamente regex.
> >
> > Grande problema que o parse do BeautifulSoup se a página não estiver
> > corretamente formatada acusa erro. Talvez usando regex isso seria mais
> > simples.
>
> O que as pessoas fazem é usar o lxml http://lxml.de/ que dizem nas
> ultimas versões da libxml2 o parser de html é melhor que o beautiful
> soup e bem mais rápido.
>
> --
> Leonardo Santagada
>
>  
>



--
Igor


[As partes desta mensagem que não continham texto foram removidas]