David Pintassilgo Posted October 26, 2007 at 07:03 PM Report #143088 Posted October 26, 2007 at 07:03 PM 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//
djthyrax Posted October 26, 2007 at 07:07 PM Report #143090 Posted October 26, 2007 at 07:07 PM 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!
David Pintassilgo Posted October 26, 2007 at 07:15 PM Author Report #143097 Posted October 26, 2007 at 07:15 PM ? 🙂 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//
djthyrax Posted October 26, 2007 at 07:16 PM Report #143098 Posted October 26, 2007 at 07:16 PM (.*?) é "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!
David Pintassilgo Posted October 26, 2007 at 07:19 PM Author Report #143103 Posted October 26, 2007 at 07:19 PM Soubes-te mais que suficiente para terminar a minha aflição! 😄 Estava a começar e já estava a desmoralizar! 😄 vou continuar a investigar,... já cá venho chatear mais... 😉 cool stuffs to check. http://blog.zxcoders.com//
Betovsky Posted October 26, 2007 at 07:31 PM Report #143105 Posted October 26, 2007 at 07:31 PM 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
David Pintassilgo Posted October 26, 2007 at 07:45 PM Author Report #143111 Posted October 26, 2007 at 07:45 PM Percebi mais ou menos. as aspas é para dizer que lá dentro vai estar a ordem do que 'o gajo' vai fazer. e o .* ou .*? é isso que explicas-te. Agora tenho outro problema, é que a informação que eu quero está numa área restrita do site, ou seja, preciso de fazer login para lá chegar. cool stuffs to check. http://blog.zxcoders.com//
pedrotuga Posted October 26, 2007 at 11:11 PM Report #143167 Posted October 26, 2007 at 11:11 PM 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
djthyrax Posted October 26, 2007 at 11:24 PM Report #143174 Posted October 26, 2007 at 11:24 PM "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!
pedrotuga Posted October 26, 2007 at 11:27 PM Report #143178 Posted October 26, 2007 at 11:27 PM yaps, obrigado, corrigido. E já está o pessoal a aprender regex 😉
djthyrax Posted October 26, 2007 at 11:28 PM Report #143179 Posted October 26, 2007 at 11:28 PM 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!
David Pintassilgo Posted October 27, 2007 at 10:06 AM Author Report #143216 Posted October 27, 2007 at 10:06 AM Boas de novo. Andei a procurar e achei isto: http://mail.python.org/pipermail/python-list/2007-July/447575.html Será isto que me resolve o problema? Agora tenho outro problema, é que a informação que eu quero está numa área restrita do site, ou seja, preciso de fazer login para lá chegar. cool stuffs to check. http://blog.zxcoders.com//
djthyrax Posted October 27, 2007 at 11:10 AM Report #143233 Posted October 27, 2007 at 11:10 AM 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!
pedrotuga Posted October 27, 2007 at 12:59 PM Report #143256 Posted October 27, 2007 at 12:59 PM 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?
djthyrax Posted October 27, 2007 at 01:11 PM Report #143261 Posted October 27, 2007 at 01:11 PM 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!
pedrotuga Posted October 27, 2007 at 01:16 PM Report #143262 Posted October 27, 2007 at 01:16 PM 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.
djthyrax Posted October 27, 2007 at 04:29 PM Report #143301 Posted October 27, 2007 at 04:29 PM 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!
pedrotuga Posted October 27, 2007 at 07:20 PM Report #143339 Posted October 27, 2007 at 07:20 PM 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.
djthyrax Posted October 27, 2007 at 08:30 PM Report #143349 Posted October 27, 2007 at 08:30 PM 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!
pedrotuga Posted October 28, 2007 at 10:12 AM Report #143434 Posted October 28, 2007 at 10:12 AM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now