Tôi đang cố tạo một url để tôi có thể gửi yêu cầu đến nó bằng mô-đun urllib
.Xây dựng chuỗi truy vấn bằng cách sử dụng mã vạch urlencode
Giả sử final_url
tôi nên
url = "www.example.com/find.php?data=http%3A%2F%2Fwww.stackoverflow.com&search=Generate+value"
Bây giờ để đạt được điều này tôi đã cố gắng theo cách sau:
>>> 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'
Bây giờ nếu bạn so sánh query_string
của tôi với các định dạng của final_url
bạn có thể quan sát hai điều
1) Thứ tự của các tham số được đảo ngược thay vì data=()&search=
là search=()&data=
2) urlencode
cũng được mã hóa các +
trong Generate+value
Tôi tin rằng sự thay đổi đầu tiên là do các hành vi ngẫu nhiên của từ điển. Vì vậy, tôi mặc dù sử dụng OrderedDict
to reverse the dictionary. As, Tôi đang sử dụng python 2.6.5
tôi đã làm
pip install ordereddict
Nhưng tôi không thể sử dụng nó trong mã của tôi khi tôi cố gắng
>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'OrderedDict' is not defined
Vì vậy, câu hỏi của tôi là cách chính xác để sử dụng OrderedDict
trong là những gì python 2.6.5 và cách tôi thực hiện urlencode
bỏ qua +
trong Generate+value
.
Ngoài ra, đây có phải là cách tiếp cận chính xác để xây dựng URL
.
Tôi đã thử 'từ bộ sưu tập nhập OrderedDict' nhưng bây giờ tôi nhận được' ImportError: không thể nhập tên OrderedDict'. Tôi đang sử dụng python '2.6.5' – RanRag
Nó sẽ có sẵn từ pyton 2.4. Jou nhận được gì nếu bạn thực thi 'import collections'? –
Tôi có thể nhập thành công bộ sưu tập mà không có lỗi nào bị ném. Tôi mặc dù 'OrderedDict' được giới thiệu từ python 2.7 trở đi. – RanRag