web-dev-qa-db-fra.com

Obtenir le contenu de la page Web avec Python?

J'utilise Python 3.1, si cela aide.

Quoi qu'il en soit, j'essaie de récupérer le contenu de this page Web. J'ai googlé pendant un petit moment et essayé différentes choses, mais elles ne fonctionnaient pas. Je suppose que cela devrait être une tâche facile, mais ... je ne peux pas l'obtenir. : /.

Résultats 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'
>>> 

Solution Python 3

Merci Jason. :RÉ.

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())
41
Andrew

Comme vous utilisez Python 3.1, vous devez utiliser les nouvelles API Python 3.1 .

Essayer:

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

Alternativement, il semble que vous travailliez à partir d’exemples de Python 2. Ecrivez-le en Python 2, puis utilisez l'outil 2to3 pour le convertir. Sous Windows, 2to3.py se trouve dans\python31\tools\scripts. Quelqu'un d'autre peut-il indiquer où trouver 2to3.py sur d'autres plateformes?

Modifier

Ces jours-ci, j'écris du code compatible Python 2 et 3 en utilisant six.

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

En supposant que vous en ayez six installés, cela fonctionne à la fois sur Python 2 et Python 3.

23
Jason R. Coombs

La meilleure façon de faire cela ce jour-là est d'utiliser la bibliothèque 'demandes':

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

Si tu me demandes. essaye celui-là

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

et lire à la manière normale, à savoir

page = resp.read()

Bonne chance quand même

7
Olu Smith

Mechanize est un excellent package pour "agir comme un navigateur", si vous souhaitez gérer l'état des cookies, etc.

http://wwwsearch.sourceforge.net/mechanize/

4
Joe Koberg

Vous pouvez utiliser urlib2 et analyser le code HTML vous-même.

Ou essayez Beautiful Soup pour effectuer une partie de l'analyse syntaxique pour vous.

1
JasDev

Une solution qui fonctionne avec Python 2.X et 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())
0
Martin Thoma

Supposons que vous souhaitiez obtenir le contenu d'une page Web. Le code suivant le fait: 

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

# example of getting a web page

from urllib import urlopen
print urlopen("http://xahlee.info/python/python_index.html").read()
0