Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
urlopen devuelve contenido de otra dirección web
#1
Hola

He realizado una pequeña aplicion con urlopen y el resultado es muy curioso. Pretendia copiar el fitxero html de la página princial de "https://www.wordreference.com/es/translation.asp" y cuando inspectiono el resultdo me ha debuelto el contenido de la página principal de "Yahoo.com"

¿A que es debido este comportamiento? ¿como puedo copiar el contenido real de "https://www.wordreference.com/es/translation.asp" ?

Codigo ejecutado:

Código:
from urllib.request import urlopen
 
WORD_URL = "https://www.wordreference.com/es/translation.asp"
file1 = open("MyFile.html","a")
for word in urlopen(WORD_URL).readlines():
    strIn = word.decode("utf-8")
    file1.write(strIn)
file1.close()
Responder
#2
Hola, bienvenido.

Al parecer WordReference detecta que estás haciendo una petición con urllib y te redirecciona a Yahoo.com. Podés cambiar la cabecera de la petición para indentificarte como otro cliente (Firefox, por ejemplo) y así evitar la redirección:

Código:
from urllib.request import Request, urlopen

WORD_URL = "https://www.wordreference.com/es/translation.asp"
headers = {
    "User-Agent": ("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) "
                   "Gecko/20100101 Firefox/74.0")
}
file1 = open("MyFile.html","ab")
for word in urlopen(Request(WORD_URL, headers=headers)).readlines():
    strIn = word
    file1.write(strIn)
file1.close()

Hice algunos cambios a tu código: si no vas a trabajar con la cadena, no es necesario que la decodifiques. Tampoco que leas línea por línea.

Como sea, tal vez te convenga usar directamente el módulo Requests, que es más sencillo y potente:

Código:
import requests

WORD_URL = "https://www.wordreference.com/es/translation.asp"
r = requests.get(WORD_URL)
with open("MyFile.html", "wb") as f:
    f.write(r.content)

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Muchisimas gracias Francisco !!!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)