Sergio Ayestarán
Necesito saber cómo construir URL en python como:
http://subdomain.domain.com?arg1=someargument&arg2=someotherargument
En la biblioteca estándar de python, ¿cómo crearía una URL?
chjortlund
Yo iría por Python urllib
es una biblioteca integrada.
Pitón 2
import urllib
url="https://example.com/somepage/?"
params = {'var1': 'some data', 'var2': 1337}
print(url + urllib.urlencode(params))
Pitón 3
import urllib.parse
url="https://example.com/somepage/?"
params = {'var1': 'some data', 'var2': 1337}
print(url + urllib.parse.urlencode(params))
Producción:
https://example.com/somepage/?var1=some+data&var2=1337
-
urllib.urlencode(getVars)
– lasote
9 de abril de 2015 a las 7:58
-
no concatenar cadenas con
+
en pitón Intentar"{}{}".format(url, querystring)
– spudfkc
21 de enero de 2016 a las 17:22
-
Estoy un poco de acuerdo, pero es una compensación. En este caso, no veo nada de malo en usar + para la concatenación, y desde Python 2 ni siquiera hay una penalización de velocidad por usar +. Sin embargo, si desea cumplir completamente con el estándar PEP8 y, a través de eso, obtener compatibilidad/estabilidad cruzada, es mejor que use format(), append() y join().
– chjortlund
26 de enero de 2016 a las 10:06
-
@chjortlund … ¿podemos convertir la salida del marco de datos a URL? mostrar la salida de la tabla del marco de datos en forma de url: ¿cualquiera puede acceder a ella?
– Ravi
31 oct 2020 a las 18:46
-
@Ravi ¿Qué quiso decir con “salida de Dataframe para que cualquiera pueda acceder a él”?
– Jean-François T.
29 de agosto de 2022 a las 2:40
Senthil Kumaran
urlparse
en la biblioteca estándar de python se trata de construir direcciones URL válidas. Consulte la documentación de urlparse
Ejemplo:
from collections import namedtuple
from urllib.parse import urljoin, urlencode, urlparse, urlunparse
# namedtuple to match the internal signature of urlunparse
Components = namedtuple(
typename="Components",
field_names=['scheme', 'netloc', 'url', 'path', 'query', 'fragment']
)
query_params = {
'param1': 'some data',
'param2': 42
}
url = urlunparse(
Components(
scheme="https",
netloc="example.com",
query=urlencode(query_params),
path="",
url="https://stackoverflow.com/",
fragment="anchor"
)
)
print(url)
Producción:
https://example.com/?param1=some+data¶m2=42#anchor
-
específicamente urlunparse o desdividir para construir una url
–Justin Hamade
09/01/2015 a las 18:45
-
urlparse se ha movido a urllib.parse desde python 3: docs.python.org/3.5/library/…
– Adrián Forsio
16/10/2015 a las 11:49
-
P.ej
urllib.parse.urlunparse(('http', 'example.com', '/path', None, 'a=1', 'fragment'))
.– x-yuri
1 de julio de 2018 a las 9:07
-
Esta biblioteca solo le brinda los componentes más primitivos para construir una URL válida; tienes que entender cómo ensamblar esos componentes. Por ejemplo, urlunparse toma un “netloc” que es el “nombre de usuario:contraseña@host:puerto”, y usted está pendiente de la codificación URL de la contraseña y la cadena interpolándola en la cadena “netloc” (de lo contrario, las contraseñas que contienen los caracteres especiales romperán su programa). Del mismo modo, debe convertir su dictado de consulta en una cadena, teniendo cuidado de codificar la URL de manera adecuada. Si está buscando una biblioteca sensata para crear URL válidas, no es esta.
– weberc2
3 mayo 2019 a las 16:42
-
@Senthil Kumaran, ¿podemos convertir la salida del marco de datos a URL? mostrar la salida de la tabla del marco de datos en forma de url: ¿cualquiera puede acceder a ella?
– Ravi
31 oct 2020 a las 18:46
Michael Jason G.
Aquí hay un ejemplo de uso urlparse
para generar URL. Esto brinda la conveniencia de agregar una ruta a la URL sin preocuparse por revisar las barras.
import urllib
def build_url(base_url, path, args_dict):
# Returns a list in the structure of urlparse.ParseResult
url_parts = list(urllib.parse.urlparse(base_url))
url_parts[2] = path
url_parts[4] = urllib.parse.urlencode(args_dict)
return urllib.parse.urlunparse(url_parts)
>>> args = {'arg1': 'value1', 'arg2': 'value2'}
>>> # works with double slash scenario
>>> build_url('http://www.example.com/', '/somepage/index.html', args)
http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
# works without slash
>>> build_url('http://www.example.com', 'somepage/index.html', args)
http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
-
He estado usando una biblioteca llamada yarl y funciona muy bien con URL. Es muy pythonic y admite operadores.
/
para unir caminos comopathlib
.– Michael Jason G.
17 de noviembre de 2020 a las 19:44
mike k
import urllib
def make_url(base_url , *res, **params):
url = base_url
for r in res:
url="{}/{}".format(url, r)
if params:
url="{}?{}".format(url, urllib.urlencode(params))
return url
print make_url('http://example.com', 'user', 'ivan', alcoholic="true", age=18)
Producción:
http://example.com/user/ivan?age=18&alcoholic=true
Peticiones (docs.python-requests.org/en/latest) generalmente se recomienda, pero no es un módulo integrado.
– Moshé
03/04/2013 a las 22:58
Está bien, estoy pidiendo cualquier biblioteca, sin importar si está integrada o no. ¡Gracias!
– Sergio Ayestarán
03/04/2013 a las 23:14
ParseResult(scheme='https', netloc='example.com', path='path', params='', query='', fragment='').geturl()
– Guettli
7 de julio de 2021 a las 8:56