2009-12-03 20 views
29

Estoy usando Python 3.1, si eso ayuda.¿Tiene contenido de páginas web con Python?

De todos modos, estoy tratando de obtener los contenidos de this página web. Busqué en Google un poco y probé cosas diferentes, pero no funcionaron. Supongo que esto debería ser una tarea fácil, pero ... No puedo conseguirlo. : /.

Resultados de urllib, urllib2:

>>> import urllib2 
Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in <module> 
    import urllib2 
ImportError: No module named urllib2 
>>> import urllib 
>>> urllib.urlopen("http://www.python.org") 
Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> 
    urllib.urlopen("http://www.python.org") 
AttributeError: 'module' object has no attribute 'urlopen' 
>>> 

Python 3 solución

Gracias, Jason. :RE.

import urllib.request 
page = urllib.request.urlopen('http://services.runescape.com/m=hiscore/ranking?table=0&category_type=0&time_filter=0&date=1519066080774&user=zezima') 
print(page.read()) 
+4

Duplicado: busque 'urlib2' o' obtenga la página web [python] 'en SO y encontrará cientos de preguntas similares. –

+0

Probé urllib2 y urllib, pero ninguno funcionó. (Primera publicación editada) – Andrew

+2

Está usando Python 3, por lo que las API son diferentes. Seguramente aprendí algo nuevo investigando esta respuesta. –

Respuesta

19

Dado que está utilizando Python 3.1, necesita utilizar el nuevo Python 3.1 APIs.

Probar:

urllib.request.urlopen('http://www.python.org/') 

Alternativamente, parece que se está trabajando desde Python 2 ejemplos. Escríbalo en Python 2, luego usa la herramienta 2to3 para convertirlo. En Windows, 2to3.py está en \ python31 \ tools \ scripts. ¿Puede alguien más señalar dónde encontrar 2to3.py en otras plataformas?

Editar

En estos días, escribo Python 2 y 3 Código compatibles mediante el uso de seis.

from six.moves import urllib 
urllib.request.urlopen('http://www.python.org') 

Asumiendo que tiene instalado seis, que se ejecuta tanto en Python 2 y Python 3.

+0

Estoy en Windows. De todos modos, gracias, funcionó bien. (La página que me vinculó parece muy útil, por cierto. Gracias por eso, especialmente.) – Andrew

+1

En Ubuntu, estaba en el camino, así que solo tenía que ejecutar el comando '2to3'. Whereis dice que está en '/ usr/bin/2to3' – Azendale

+2

Maldita sea, python 3 está comenzando a convertirse en un problema: no se puede simplemente copiar y pegar la primera respuesta de desbordamiento de pila y esperar que funcione más. – xApple

1

Puede usar urlib2 y analizar el HTML usted mismo.

O pruebe Beautiful Soup para hacer algunos de los análisis para usted.

+0

Intentó urllib2 y urllib, pero ninguno funcionó. (Editado primera publicación) – Andrew

+0

Andrew, otros pueden ayudarlo mejor si describe en detalle lo que intentó y qué mensaje (s) de error/comportamiento inesperado resultó. – micahwittman

+0

Lo edité en mi publicación inicial porque no quería un gran comentario. :PAG. – Andrew

6

si usted me pregunta. prueba este

import urllib2 
resp = urllib2.urlopen('http://hiscore.runescape.com/index_lite.ws?player=zezima') 

y leer de forma normal, es decir

page = resp.read() 

Buena suerte aunque

24

La mejor manera de hacerlo estos días es el uso de la biblioteca 'peticiones':

import requests 
response = requests.get('http://hiscore.runescape.com/index_lite.ws?player=zezima') 
print (response.status_code) 
print (response.content) 
+1

Zezima foreva <3 –

0

Una solución con funciona con Python 2.X y Python 3.X:

try: 
    # For Python 3.0 and later 
    from urllib.request import urlopen 
except ImportError: 
    # Fall back to Python 2's urllib2 
    from urllib2 import urlopen 

url = 'http://hiscore.runescape.com/index_lite.ws?player=zezima' 
response = urlopen(url) 
data = str(response.read()) 
Cuestiones relacionadas