Я пытаюсь создать 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
.