Estoy tratando de construir una url para que pueda enviar una solicitud de get a ella usando el módulo urllib
.Construir cadena de consulta usando urlencode python
Supongamos que mi final_url
debe ser
url = "www.example.com/find.php?data=http%3A%2F%2Fwww.stackoverflow.com&search=Generate+value"
Ahora para lograr este Probé la siguiente manera:
>>> initial_url = "http://www.stackoverflow.com"
>>> search = "Generate+value"
>>> params = {"data":initial_url,"search":search}
>>> query_string = urllib.urlencode(params)
>>> query_string
'search=Generate%2Bvalue&data=http%3A%2F%2Fwww.stackoverflow.com'
Ahora bien, si se compara mi query_string
con el formato de final_url
Puede observadores dos cosas
1) El orden de los params se invierte en lugar de data=()&search=
es search=()&data=
2) urlencode
también codifica la +
en Generate+value
Creo que el primer cambio se debe al comportamiento aleatorio del diccionario. Entonces, pensé en usar OrderedDict
to reverse the dictionary. Como, estoy usando python 2.6.5
hice
pip install ordereddict
Pero no soy capaz de utilizarlo en mi código cuando intento
>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'OrderedDict' is not defined
lo tanto, mi pregunta es ¿cuál es la forma correcta de utilizar OrderedDict
en Python 2.6.5 y cómo hago urlencode
ignora el +
en Generate+value
.
Además, este es el enfoque correcto para compilar URL
.
Intenté 'de colecciones import OrderedDict' pero ahora estoy obteniendo' ImportError: no puedo importar el nombre OrderedDict'. Estoy usando python '2.6.5' – RanRag
Debería estar disponible desde pyton 2.4. ¿Qué obtendrás si ejecutas 'colecciones de importación'? –
Puedo importar correctamente la colección, no se produce ningún error. Pensé que 'OrderedDict' se introdujo desde python 2.7 en adelante. – RanRag