Ce qui suit fonctionne lorsque je le colle sur le navigateur:
http://www.somesite.com/details.pl?urn=2344
Mais lorsque j'essaye de lire l'URL avec Python, rien ne se passe:
link = 'http://www.somesite.com/details.pl?urn=2344'
f = urllib.urlopen(link)
myfile = f.readline()
print myfile
Dois-je encoder l'URL ou y a-t-il quelque chose que je ne vois pas?
requests
module de marque , son utilisation se traduit par un code plus pythonique.Traceback (most recent call last): File "/home/lars/parser.py", line 9, in <module> f = urllib.urlopen(link) AttributeError: module 'urllib' has no attribute 'urlopen'
semble qu'il n'y ait pas de fonction urlopen dans python 3.5. At-il été renommé? EDIT: L'extrait de réponse ci-dessous résout:from urllib.request import urlopen
urlib
package a subi une refactorisation et des modifications d'API. Je vais mettre à jour la réponse pour mettre l'accent sur Python 2.Pour les
python3
utilisateurs, pour gagner du temps, utilisez le code suivant,from urllib.request import urlopen link = "https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html" f = urlopen(link) myfile = f.read() print(myfile)
Je sais qu'il existe différents threads pour l'erreur:,
Name Error: urlopen is not defined
mais j'ai pensé que cela pourrait gagner du temps.la source
Une solution fonctionnant avec Python 2.X et Python 3.X utilise la bibliothèque de compatibilité Python 2 et 3
six
:from six.moves.urllib.request import urlopen link = "http://www.somesite.com/details.pl?urn=2344" response = urlopen(link) content = response.read() print(content)
la source
Aucune de ces réponses n'est très bonne pour Python 3 (testé sur la dernière version au moment de cet article).
Voici comment vous procédez ...
import urllib.request try: with urllib.request.urlopen('http://www.python.org/') as f: print(f.read().decode('utf-8')) except urllib.error.URLError as e: print(e.reason)
Ce qui précède concerne les contenus qui renvoient «utf-8». Supprimez .decode ('utf-8') si vous voulez que python "devine l'encodage approprié".
Documentation: https://docs.python.org/3/library/urllib.request.html#module-urllib.request
la source
Nous pouvons lire le contenu html du site Web comme ci-dessous:
from urllib.request import urlopen response = urlopen('http://google.com/') html = response.read() print(html)
la source
#!/usr/bin/python # -*- coding: utf-8 -*- # Works on python 3 and python 2. # when server knows where the request is coming from. import sys if sys.version_info[0] == 3: from urllib.request import urlopen else: from urllib import urlopen with urlopen('https://www.facebook.com/') as \ url: data = url.read() print data # When the server does not know where the request is coming from. # Works on python 3. import urllib.request user_agent = \ 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' url = 'https://www.facebook.com/' headers = {'User-Agent': user_agent} request = urllib.request.Request(url, None, headers) response = urllib.request.urlopen(request) data = response.read() print data
la source
L'URL doit être une chaîne:
import urllib link = "http://www.somesite.com/details.pl?urn=2344" f = urllib.urlopen(link) myfile = f.readline() print myfile
la source
J'ai utilisé le code suivant:
import urllib def read_text(): quotes = urllib.urlopen("https://s3.amazonaws.com/udacity-hosted-downloads/ud036/movie_quotes.txt") contents_file = quotes.read() print contents_file read_text()
la source
# retrieving data from url # only for python 3 import urllib.request def main(): url = "http://docs.python.org" # retrieving data from URL webUrl = urllib.request.urlopen(url) print("Result code: " + str(webUrl.getcode())) # print data from URL print("Returned data: -----------------") data = webUrl.read().decode("utf-8") print(data) if __name__ == "__main__": main()
la source
from urllib.request import urlopen # if has Chinese, apply decode() html = urlopen("https://blog.csdn.net/qq_39591494/article/details/83934260").read().decode('utf-8') print(html)
la source
Vous pouvez utiliser
requests
etbeautifulsoup
bibliothèques pour lire des données sur un site Web. Installez simplement ces deux bibliothèques et tapez le code suivant.import requests import bs4 help(requests) help(bs4)
Vous obtiendrez toutes les informations dont vous avez besoin sur la bibliothèque.
la source
help
est utilisé pour afficher la documentation du module / classe / fonction donné. Je pense que cette question demande un moyen de voir le contenu de la réponse