Создайте строку запроса с помощью urlencode python

Я пытаюсь создать URL-адрес, чтобы я мог отправить получить к нему запрос с помощью модуля urllib.

Предположим, мой final_urlдолжен быть

url = "www.example.com/find.php?data=http%3A%2F%2Fwww.stackoverflow.com&search=Generate+value"

Теперь, чтобы добиться этого, я попробовал следующий способ:

>>> 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'

Теперь, если вы сравните мой query_stringс форматом final_urlвы можете наблюдать две вещи

1) Порядок параметров обратный вместо data=()&search=it search=()&data=

2) urlencodeтакже закодировал +в Generate+value

Я считаю, что первое изменение связано с случайное поведение словаря. Итак, я использовалOrderedDict для реверсирования словаря . Так как я использую python 2.6.5 Я сделал

pip install ordereddict

Но я не могу использовать его в своем коде, когда я пытаюсь

>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'OrderedDict' is not defined

Итак, мой вопрос заключается в том, как правильно использовать OrderedDictв p ython 2.6.5 и как заставить urlencodeигнорировать +в Generate+value.

Кроме того, является ли это правильным подходом к построению URL.

9
задан Community 23 May 2017 в 12:10
поделиться