Jump to content

Recommended Posts

Posted

Boas.

Ando a ver se precebo alguma coisa sobre o assunto:

Indicaram-me este pequeno exemplo

import urllib2
page = urllib2.urlopen(http://google.com).read()
titulo = re.findall('<TITLE>(.*?)</TITLE>',page)

Isso deu uns erros e eu lá meti isto assim:

import urllib2, re
page = urllib2.urlopen('http://google.com').read()
titulo = re.findall('<TITLE>(.*?)</TITLE>',page)
print titulo

Supostamente havia de me devolver o titulo da pagina,certo? Mas a unica coisa que 'ele' me 'diz' é

[]

O que é que está mal?

cool stuffs to check.

http://blog.zxcoders.com//

Posted

Se olhares para o source da página, vês que o <TITLE> está em minúsculas. Por isso,

titulo = re.findall('<title>(.*?)</title>', page)

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

? 🙂 Obrigado.

Já agora ajuda-me a ler/interpretar esta parte:

'<title>(.*?)</title>'

Significa que vai procurar onde está    <title>    e      </title>        e o    (.*?) significa propriamente o que? é uma forma de 'o gajo' saber que "é isto aqui que é para vir buscar",.. é isso?

Não sei se me fiz entender...

cool stuffs to check.

http://blog.zxcoders.com//

Posted

(.*?) é "matchar tudo até ao primeiro". 😄

Mas não te posso ajudar mt mais, não sei regex. 😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

O que é que está mal?

O facto de estares a usar expressões regulares. 😉

Em relação ao (.*?)

O . significa qualquer coisa

O * significa zero ou mais vezes

Portanto .* significa qualquer coisa zero ou mais vezes, basicamente qualquer texto.

O problema é que o .* (como o .+, etc) são greedys e comem tudo o que lhes aparece. Portanto no teu caso se tivesses apenas o (.*) nunca iria fazer match, porque o (.*) ia comer tudo e depois a parte do "</title>" não ia fazer match porque já não sobrava nada da string. A parte do "</title>" tinha sido feito match com o (.*)

E é para isso que usas o '?'. Torna o (.*) que é greedy em lazy e só come o mínimo que é preciso.

Deu para perceber? Não me parece que a explicação esteja muito clara, mas prontos...

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Posted

Betovsky, explicaste bem excepto na parte do ponto de interrogação.

O ponto de interrogação modifica o caracter de forma a que este não seja greedy. Mas a definição de greedy não é bem essa.

Por exemplo, neste caso '<title>(.*)</title>' ia funcionar tambem. No caso dele não funcionou foi porque ele tinha posto maiusculas e a pagina que ele estava a testar tinha minusculas.

Greedy significa que tenta apanhar o máximo possivel. Neste caso o máximo possivel é o mesmo que o mínimo.

Mas se o texto fosse qq coisa como

<title>blablablasmdlasbdkjba</title>xpto</title>...

então aí já fazia diferença.

a expressão regular: '<title>(.*?)<title>' ia apanhar:

blablablasmdlasbdkjba

enquanto que a expressão '<title>(.*)<title>' ia apanhar:

blablablasmdlasbdkjba</title>xpto

Posted

"enquanto que a expressão '<title>(.*?)<title>' ia apanhar:" <- tens aí um ? a mais 😉

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

yaps, obrigado, corrigido.

E já está o pessoal a aprender regex 😄

Algum dia havia de ser. 😉

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Não. Estuda o sistema de login e obtem os dados dessa maneira. Acho que pus na secção de PHP algo parecido para o deviantART.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Não. Estuda o sistema de login e obtem os dados dessa maneira. Acho que pus na secção de PHP algo parecido para o deviantART.

Djthyrax, uma vez que já experimentaste, como é que estas bibliotecas tratam da sessão?

Tipo... se fizeres dois pedidos, são uas sessões diferentes?

Se for a mesma sessão então basta-lhe fazer o pedido post com o user e a pass,e depois sacar o header para ver para onde é redirecionado.

Ou é preciso escrever algum código por causa da sessão?

Posted

Não. Estuda o sistema de login e obtem os dados dessa maneira. Acho que pus na secção de PHP algo parecido para o deviantART.

Djthyrax, uma vez que já experimentaste, como é que estas bibliotecas tratam da sessão?

Tipo... se fizeres dois pedidos, são uas sessões diferentes?

Se for a mesma sessão então basta-lhe fazer o pedido post com o user e a pass,e depois sacar o header para ver para onde é redirecionado.

Ou é preciso escrever algum código por causa da sessão?

No devianART? Basta fazer um POST ao URI /users/login (acho que é este) no host www.deviantart.com e guardar o cookie userinfo, algo assim. Este cookie é um serialize() em PHP. Depois, é só mandar o header do cookie em todos os requests. 😉

Aqui vai um script que, se a memória não me falha, faz isso: http://botdom.com/wiki/DANote

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

mmm... ok... tou a ver o esquema.

E para páginas que não usem cookies, alguem sabe se a sessão é mantida?

Bem, mas se o sysemp usar cookies aí tens david.

Raw HTTP authentication?

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

mmm... ok... tou a ver o esquema.

E para páginas que não usem cookies, alguem sabe se a sessão é mantida?

Bem, mas se o sysemp usar cookies aí tens david.

Raw HTTP authentication?

Acho que te estas a referir a paginas que utilizam por exemplo o .htaccess certo?

Mas pore exemplo, o system empires tem o seu sistema proprio de autenticação.

Posted

mmm... ok... tou a ver o esquema.

E para páginas que não usem cookies, alguem sabe se a sessão é mantida?

Bem, mas se o sysemp usar cookies aí tens david.

Raw HTTP authentication?

Acho que te estas a referir a paginas que utilizam por exemplo o .htaccess certo?

Mas pore exemplo, o system empires tem o seu sistema proprio de autenticação.

Tens dois tipos de autenticação mais utilizados:

-> "Raw HTTP authentication", mais conhecido na forma de http://utilizador:password@hostname/uri ou então usando o exemplo do htaccess que referiste

-> Sessões, o caso do deviantART e do System Empires. Há diversos sistemas de autenticação deste tipo, mas TODOS assentam em cookies ou parâmetros de GET para te identificar.

Para o segundo tipo, a diferença é apenas o que tens de enviar e o que tens de guardar em específico porque a forma como funcionam é sempre o mesmo.

EDIT: Typo.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Não é preciso usares cookies ou parametros GET. Na verdade nunca entendi qual é a ideia de passar a SID por get como alguns foruns fazem, se alguem me souber explicar a finalidade disso agradeço.

Eu não gosto de usar cookies, ate agora sempre que fiz um sistema de autenticação simplesmente guardo os dados na sessão e uso uma variavel para indicar o estado do utilizador, se não estiver autenticado, mando-o à fava.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.