David Pintassilgo Posted October 26, 2007 at 07:03 PM Report Share #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// Link to comment Share on other sites More sharing options...
djthyrax Posted October 26, 2007 at 07:07 PM Report Share #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! Link to comment Share on other sites More sharing options...
David Pintassilgo Posted October 26, 2007 at 07:15 PM Author Report Share #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// Link to comment Share on other sites More sharing options...
djthyrax Posted October 26, 2007 at 07:16 PM Report Share #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! Link to comment Share on other sites More sharing options...
David Pintassilgo Posted October 26, 2007 at 07:19 PM Author Report Share #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// Link to comment Share on other sites More sharing options...
Betovsky Posted October 26, 2007 at 07:31 PM Report Share #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 Link to comment Share on other sites More sharing options...
David Pintassilgo Posted October 26, 2007 at 07:45 PM Author Report Share #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// Link to comment Share on other sites More sharing options...
pedrotuga Posted October 26, 2007 at 11:11 PM Report Share #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 Link to comment Share on other sites More sharing options...
djthyrax Posted October 26, 2007 at 11:24 PM Report Share #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! Link to comment Share on other sites More sharing options...
pedrotuga Posted October 26, 2007 at 11:27 PM Report Share #143178 Posted October 26, 2007 at 11:27 PM yaps, obrigado, corrigido. E já está o pessoal a aprender regex 😉 Link to comment Share on other sites More sharing options...
djthyrax Posted October 26, 2007 at 11:28 PM Report Share #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! Link to comment Share on other sites More sharing options...
David Pintassilgo Posted October 27, 2007 at 10:06 AM Author Report Share #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// Link to comment Share on other sites More sharing options...
djthyrax Posted October 27, 2007 at 11:10 AM Report Share #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! Link to comment Share on other sites More sharing options...
pedrotuga Posted October 27, 2007 at 12:59 PM Report Share #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? Link to comment Share on other sites More sharing options...
djthyrax Posted October 27, 2007 at 01:11 PM Report Share #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! Link to comment Share on other sites More sharing options...
pedrotuga Posted October 27, 2007 at 01:16 PM Report Share #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. Link to comment Share on other sites More sharing options...
djthyrax Posted October 27, 2007 at 04:29 PM Report Share #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! Link to comment Share on other sites More sharing options...
pedrotuga Posted October 27, 2007 at 07:20 PM Report Share #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. Link to comment Share on other sites More sharing options...
djthyrax Posted October 27, 2007 at 08:30 PM Report Share #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! Link to comment Share on other sites More sharing options...
pedrotuga Posted October 28, 2007 at 10:12 AM Report Share #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. Link to comment Share on other sites More sharing options...
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