Estoy usando urlretrieve desde el módulo urllib.Urlretrieve y User-Agent? - Python
Parece que no encuentro cómo agregar una descripción de User-Agent a mis solicitudes.
¿Es posible con urlretrieve? o ¿necesito usar otro método?
Estoy usando urlretrieve desde el módulo urllib.Urlretrieve y User-Agent? - Python
Parece que no encuentro cómo agregar una descripción de User-Agent a mis solicitudes.
¿Es posible con urlretrieve? o ¿necesito usar otro método?
No creo que sea posible con urlretrieve, al menos no fácilmente. Yo propondría crear un objeto urllib2.Request y pasarle los encabezados requeridos. Ver
http://docs.python.org/library/urllib2.html#urllib2.urlopen
de ejemplos.
Puede usar las clases URLopener o FancyURLopener. El argumento 'versión' especifica el agente de usuario del objeto de apertura.
opener = FancyURLopener({})
opener.version = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.69 Safari/537.36'
opener.retrieve('http://example.com', 'index.html')
En primer lugar, configurar la versión:
urllib.URLopener.version = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0'
continuación:
filename, headers = urllib.urlretrieve(url)
Sé que este tema había estado allí durante 7 años. Y llegué a este problema tratando de averiguar cómo cambiar el User-Agent
mientras usaba la función urlretrieve
.
Para cualquier persona que llegó a este problema sin suerte, aquí es cómo lo hice:
# proxy = ProxyHandler({'http': 'http://192.168.1.31:8888'})
proxy = ProxyHandler({})
opener = build_opener(proxy)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
install_opener(opener)
result = urlretrieve(url=file_url, filename=file_name)
La razón añadí proxy es para monitorear el tráfico de Charles, y aquí es el tráfico que tengo:
Considere la posibilidad de corregir .version (es una edición demasiado pequeña para que yo lo haga) – emartel