Lo siguiente funciona cuando lo pego en el navegador:
http://www.somesite.com/details.pl?urn=2344
Pero cuando intento leer la URL con Python no pasa nada:
link = 'http://www.somesite.com/details.pl?urn=2344'
f = urllib.urlopen(link)
myfile = f.readline()
print myfile
¿Necesito codificar la URL o hay algo que no veo?
requests
Module, su uso se corresponde con un código más Pythonic.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'
Parece que no hay una función urlopen en Python 3.5. ¿Ha sido renombrado? EDITAR: El fragmento en la respuesta a continuación resuelve:from urllib.request import urlopen
urlib
paquete vio algunas refactorizaciones y cambios en la API. Actualizaré la respuesta para enfatizar en Python 2.Para los
python3
usuarios, para ahorrar tiempo, use el siguiente código,from urllib.request import urlopen link = "https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html" f = urlopen(link) myfile = f.read() print(myfile)
Sé que hay diferentes hilos de error:,
Name Error: urlopen is not defined
pero pensé que esto podría ahorrar tiempo.fuente
Una solución que funciona con Python 2.X y Python 3.X hace uso de la biblioteca de compatibilidad de Python 2 y 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)
fuente
Ninguna de estas respuestas es muy buena para Python 3 (probado en la última versión en el momento de esta publicación).
Así es como lo haces ...
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)
Lo anterior es para contenidos que devuelven 'utf-8'. Elimine .decode ('utf-8') si desea que Python "adivine la codificación apropiada".
Documentación: https://docs.python.org/3/library/urllib.request.html#module-urllib.request
fuente
Podemos leer el contenido html del sitio web de la siguiente manera:
from urllib.request import urlopen response = urlopen('http://google.com/') html = response.read() print(html)
fuente
#!/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
fuente
La URL debe ser una cadena:
import urllib link = "http://www.somesite.com/details.pl?urn=2344" f = urllib.urlopen(link) myfile = f.readline() print myfile
fuente
Use el siguiente código:
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()
fuente
# 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()
fuente
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)
fuente
Puede utilizar bibliotecas
requests
ybeautifulsoup
para leer datos en un sitio web. Simplemente instale estas dos bibliotecas y escriba el siguiente código.import requests import bs4 help(requests) help(bs4)
Obtendrá toda la información que necesita sobre la biblioteca.
fuente
help
se utiliza para ver la documentación del módulo / clase / función dada. Creo que esa pregunta pide una forma de ver el contenido de la respuesta