J'essaie simplement d'extraire des données d'un site Web en utilisant le module urllib. J'ai donc écrit un exemple simple.
Voici mon code:
import urllib
sock = urllib.request.urlopen("http://diveintopython.org/")
htmlSource = sock.read()
sock.close()
print (htmlSource)
Mais j'ai eu une erreur comme:
Traceback (most recent call last):
File "D:\test.py", line 3, in <module>
sock = urllib.request.urlopen("http://diveintopython.org/")
AttributeError: 'module' object has no attribute 'request'
Vous lisez la mauvaise documentation ou la mauvaise version de l'interpréteur Python. Vous avez essayé d'utiliser la bibliothèque Python 3 dans Python 2.
Utilisation:
import urllib2
sock = urllib2.urlopen("http://diveintopython.org/")
htmlSource = sock.read()
sock.close()
print htmlSource
La bibliothèque Python 2 urllib2
a été remplacée par urllib.request
dans Python 3.
import requests
import urllib
link = "http://www.somesite.com/details.pl?urn=2344"
f = urllib.request.urlopen(link)
myfile = f.read()
writeFileObj = open('output.xml', 'wb')
writeFileObj.write(myfile)
writeFileObj.close()
C’est ce que j’utilise pour obtenir des données à partir d’URL. C’est bien parce que vous pouvez sauvegarder le fichier en même temps si vous en avez besoin:
import urllib
result = urllib.urlretrieve("http://diveintopython.org/")
print open(result[0]).read()
sortie:
'<!DOCTYPE html><body style="padding:0; margin:0;"><iframe src="http://mcc.godaddy.com/park/pKMcpaMuM2WwoTq1LzRhLzI0" style="visibility: visible;height: 2000px;" allowtransparency="true" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="100%"></iframe></body></html>'
Edit: urlretrieve fonctionne en python 2 et 3
Dans Python3, vous pouvez utiliser urllib ou urllib3
urllib:
import urllib.request
with urllib.request.urlopen('http://docs.python.org') as response:
htmlSource = response.read()
urllib3:
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'http://docs.python.org')
htmlSource = r.data
Plus de détails peuvent être trouvés dans la documentation urllib ou python .
assurez-vous d'importer les demandes d'urllib, puis essayez ce format, cela a fonctionné pour moi:
depuis la demande d'importation d'urllib urllib.request.urlopen ()