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:

  1. from urllib.request import urlopen
  2.  
  3. WORD_URL = "https://www.wordreference.com/es/translation.asp"
  4. file1 = open("MyFile.html","a")
  5. for word in urlopen(WORD_URL).readlines():
  6.     strIn = word.decode("utf-8")
  7.     file1.write(strIn)
  8. 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:

  1. from urllib.request import Request, urlopen
  2.  
  3. WORD_URL = "https://www.wordreference.com/es/translation.asp"
  4. headers = {
  5. "User-Agent": ("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) "
  6. "Gecko/20100101 Firefox/74.0")
  7. }
  8. file1 = open("MyFile.html","ab")
  9. for word in urlopen(Request(WORD_URL, headers=headers)).readlines():
  10. strIn = word
  11. file1.write(strIn)
  12. 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:

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


Saludos
Responder
#3
Muchisimas gracias Francisco !!!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)