Ruivo Posted July 3, 2012 at 11:17 PM Report #467166 Posted July 3, 2012 at 11:17 PM Bom dia pessoal estou com um problema usando o preg_match. Dantes eu usava o preg_match e estava tudo a funcionar. Mas agora o site onde eu obtinha os valores alterou ali um promenor. Que para se ver a pagina que contem os valores que eu quero é precisso de fazer Login. Então gostaria de saber como obter o valores? Cumprimentos
pedrosorio Posted July 3, 2012 at 11:22 PM Report #467169 Posted July 3, 2012 at 11:22 PM O que é que o preg_match tem a ver com o resto? Estavas a ir buscar valores a um site (CURL?) e usavas preg_match para identificar esses valores. Agora é preciso fazer login. Portanto a tua dúvida é como fazer login, o preg_match não é para aqui chamado. Sem saber qual é o site ou o tipo de login, parece-me difícil ajudar-te. Não respondo a dúvidas por mensagem.
Ruivo Posted July 3, 2012 at 11:30 PM Author Report #467170 Posted July 3, 2012 at 11:30 PM O site é este http://en.warrock.nexoneu.com/ Sim a minha duvida é como fazer login. Mais qualquer coisa eu digo. Tipo de login é penso que: User ID e Password. e é feito por cookies...
laeknishendr Posted July 4, 2012 at 01:27 AM Report #467189 Posted July 4, 2012 at 01:27 AM Olá camarada Ruivo, pelo que entendi deseja usar cURL para fazer login, seria ótimo se você postasse os valores que você deseja pegar com os prefixos e sufixos, caso já tenha conseguido fazer login no sistema.
Ruivo Posted July 4, 2012 at 01:59 AM Author Report #467192 Posted July 4, 2012 at 01:59 AM Olá camarada Ruivo, pelo que entendi deseja usar cURL para fazer login, seria ótimo se você postasse os valores que você deseja pegar com os prefixos e sufixos, caso já tenha conseguido fazer login no sistema. Os dados estão por exemplo nesta pagina: http://en.warrock.nexoneu.com/Ranking/Profile#/xhawkeye08 são as Kills, Deaths, Nick, Nivel e por ai... Quanto a cURL eu nunca usei nem faço a minima ideia. Eu não consigo pegar os dados declarando os cookies antes da script? Se não então que devo usar?
yoda Posted July 4, 2012 at 07:42 AM Report #467200 Posted July 4, 2012 at 07:42 AM O que estás a tentar fazer é legal? before you post, what have you tried? - http://filipematias.info sense, purpose, direction
HappyHippyHippo Posted July 4, 2012 at 09:06 AM Report #467207 Posted July 4, 2012 at 09:06 AM O que estás a tentar fazer é legal? se for só verificar o ranking deverá ser ... não vejo problemas em saber a informação estatística de um jogador no entanto os links dão informação que o site encontrasse em manutenção, por isso, daqui nada IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Ruivo Posted July 4, 2012 at 11:12 AM Author Report #467217 Posted July 4, 2012 at 11:12 AM se for só verificar o ranking deverá ser ... não vejo problemas em saber a informação estatística de um jogador no entanto os links dão informação que o site encontrasse em manutenção, por isso, daqui nada Sim é legal. Agora o site já deve estar disponivel.
laeknishendr Posted July 4, 2012 at 02:50 PM Report #467271 Posted July 4, 2012 at 02:50 PM Ruivo, você primeiramente precisa usar cURL para fazer o login na página "http://passport.nexoneu.com/Login.aspx?nexoneuTheme=Warrock", deve também definir a constante CURLOPT_COOKIEJAR, para salvar os cookies após o login. Feito esse processo aí sim você deve acessar a página "http://en.warrock.nexoneu.com/Ranking/Profile#/xhawkeye08"
Ruivo Posted July 5, 2012 at 12:57 PM Author Report #467417 Posted July 5, 2012 at 12:57 PM Estive a tentar <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://passport.nexoneu.com/Login.aspx?nexoneuTheme=Warrock"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_xec($ch); echo "$output"; $url = file_get_contents("http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08", false, $context); preg_match('%<h1 class="catorzered">(.*?)<\/h1>%', $url, $nomeproduto); print 'Nome Produto: '.$nomeproduto[1].'<br>'; // Nome produto $nomeproduto preg_match('%<div class="profileInfo">(.*?)<\/div>%', $url, $precoproduto); print 'Preþo Produto: '.$precoproduto[1].'<br>'; //Preþo Produto $precoproduto curl_close($ch); ?> e dá-me o seguinte erro: Fatal error: Call to undefined function curl_init() in C:\Users\Rei120\Desktop\wos\www\warrock.php on line 2 Que está errado?
HappyHippyHippo Posted July 5, 2012 at 01:00 PM Report #467420 Posted July 5, 2012 at 01:00 PM (edited) não tens instalado o módulo cURL do apache. faz este script <?php phpinfo(); ?> e verifica se realmente tens isso instalado Edited July 5, 2012 at 01:00 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Ruivo Posted July 5, 2012 at 01:16 PM Author Report #467429 Posted July 5, 2012 at 01:16 PM Pois eu procurei e nao encontrei nada relacionado com cURL na pagina phpinfo. Como posso instalar?
dash Posted July 5, 2012 at 01:20 PM Report #467430 Posted July 5, 2012 at 01:20 PM Tens auxilio na página do cURL: http://curl.haxx.se/libcurl/php/install.html#windows
Ruivo Posted July 6, 2012 at 03:11 AM Author Report #467599 Posted July 6, 2012 at 03:11 AM Muito obrigado pessoal já consegui instalar o cURL. Agora deparei-me com outro problema as expressões regulares que eu pensava estarem certas afinal devem ter qualquer coisa mal porque o valor não é apanhado Eu tenho assim: $url = file_get_contents("http://en.warrock.nexoneu.com/Ranking/Profile/xhawkeye08", false, $context); preg_match('%<td>KILLS<\/td>\n<td class="rTxt">[0-9.-]<\/td>%', $url, $kills); print 'Kills: '.$kills[1].'<br>'; e quero apanhar isto <tr> <td>KILLS</td> <td class="rTxt">318,717</td> </tr> Sendo o valor 318,717 o valor que eu quero que apanhe. Alguem me dá uma ajudinha?
HappyHippyHippo Posted July 6, 2012 at 08:55 AM Report #467613 Posted July 6, 2012 at 08:55 AM (edited) estou a ver pelo menos alguns erros na expressão regular 1º - tens a seguinte combinação "[0-9.-]" para detectar um número, como vês, não tens o caracter virgula, caracter que aparece no número no HTML a ser interpretado "318,717" 2º - não estás a dizer que o grupo de elementos que determina o número pode aparecer 1 ou mais vezes, que na realidade deveria ser algo do genero: (-|)\d+(\,\d+|) isto indica : (-|) : sinal menos ou não \d+ : um dígito ou mais (\,\d+|) : uma virgula com um dígito ou mais ou nada 3º - lembra-te que o resultado será toda a entrada expressão regular, isto é, será todo o <td>KILLS</td> <td class="rTxt">318,717</td> podes usar o lookahead e o lookbehind para selecionar somente o que pretendes podes sempre usar sites online para testar a tua expressão regular como por exemplo : http://www.regextester.com/ Edited July 6, 2012 at 08:56 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Ruivo Posted July 6, 2012 at 07:26 PM Author Report #467792 Posted July 6, 2012 at 07:26 PM Desculpa mas nao estou a perceber. Será que me podes fazer a expressão regular em php?
yoda Posted July 6, 2012 at 07:47 PM Report #467795 Posted July 6, 2012 at 07:47 PM Com esta classe safas-te melhor : http://php.net/manual/en/class.domxpath.php before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Ruivo Posted July 6, 2012 at 07:58 PM Author Report #467799 Posted July 6, 2012 at 07:58 PM Com esta classe safas-te melhor : http://php.net/manual/en/class.domxpath.php Eu nunca usei classes DOM e estive a ver e nao consegui perceber nada...
yoda Posted July 6, 2012 at 09:07 PM Report #467812 Posted July 6, 2012 at 09:07 PM http://ditio.net/2008/12/01/php-xpath-tutorial-advanced-xml-part-1/ Aqui percebes o básico. É bastante fácil entender como funciona, e bem mais simples que expressões regulares. before you post, what have you tried? - http://filipematias.info sense, purpose, direction
laeknishendr Posted July 7, 2012 at 04:16 AM Report #467847 Posted July 7, 2012 at 04:16 AM (edited) Olá ruivo, é simples para pegar o conteúdo dentro dessas tags: preg_match_all("/class=\"rTxt\">(.*?)<\/td>/", $var, $matches); Edited July 8, 2012 at 03:40 PM by brunoais geshi
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