• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nunos

Como abrir um link atraves de código

12 mensagens neste tópico

Olá.

O que eu gostava de conseguir fazer era simular um clique de rato numa hiperligacao através de código python.

a hiperligacao é deste tipo:

"<a class='addToPgs repkey_y:PT_2462058_2__1' id='add_y:PT_2462058_2__1'  href='#' rel='addToMyPlaces nofollow' title='Guardar contacto em My PAi'>Guardar</a>"

Como dá para ver o parametro href = "#" ou seja não há propriamente um endereço de destino deste link. Alias quando se carrega no link, continua-se na mesma página.

O código que tenho para "abrir" a pagina é este.

import urllib2
url = "http://www.pai.pt/search/pensoes.html"
fo = urllib2.urlopen(url)
page = fo.read()

Será que alguem me consegue dar uma ajuda aqui sff? Thanks.

Cumps  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando usares a tag [ code ] usa também a linguagem: [ code = python ] :confused:

Quanto ao teu problema, estive a dar uma vista de olhos mas não te consigo ajudar. A ideia com que fiquei foi que tu tens uma sessão automaticamente quando entras na página. Isso como não tem propriamente um link deve chamar um dos scripts que estão no fundo da página (vê o HTML).

Procura por lá... :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou então tenta ver se a bilblioteca mechanize (não é default do python) tem alguma coisa que te possa ajudar (btw, a documentação é uma caca, por isso, se não o tentares, entende-se perfeitamente. :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelas sugestões.

Entretanto arranjei outra maneira de contornar isto.

Outro coisa que talvez me saibam responder é porque é que quando eu faço, por exemplo

isto:

import urllib2
url = "http://www.pai.pt/search/pensoes.html"
fo = urllib2.urlopen(url)
page = fo.read()
print page

Aquilo que é impresso não exactamente igual ao source code, aparecem alguns caracteres esquesitos, tipo quadrados e assim. Deve estar relacionado com o "enconding" digo eu na minha ignorância. Como é que posso por isto bem?

Cumps  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, está relacionado como encoding.

Tenta correr assim:

# -*- coding: utf-8 -*-

import urllib2
url = "http://www.pai.pt/search/pensoes.html"
fo = urllib2.urlopen(url)
page = fo.read()
print page

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usei este código

# -*- coding: utf-8 -*-

import urllib2
url = "localhost/exp/"
fo = urllib2.urlopen(url)
page = fo.read()
print page

para ler esta página

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Título</title>
</head>
<body>
Hello World!
</body>
</html>

e continuo a obter os ditos quadrados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que quadrados? Na palavra título? Experimenta pôr:

print u'%s' %page

Estou a atirar para o ar :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usei este código

# -*- coding: utf-8 -*-

import urllib2
url = "localhost/exp/"
fo = urllib2.urlopen(url)
page = fo.read()
print page

para ler esta página

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Título</title>
</head>
<body>
Hello World!
</body>
</html>

e continuo a obter os ditos quadrados.

Os quadrados aparecem onde (consola, idle, browser)?
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AH! Esses quadrados são os "\r", faz

print page.replace("\r","")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AH! Esses quadrados são os "\r", faz

print page.replace("\r","")

Funcionou! Obrigado a todos pela ajuda.

Cumps  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora