Vì vậy, tôi muốn sử dụng tuyệt đối của Kenneth requests module. Đã giải quyết vấn đề này trong khi cố gắng sử dụng Freebase API.Chuyển đối tượng JSON tới url có yêu cầu
Về cơ bản, API của họ trông như thế:
https://www.googleapis.com/freebase/v1/mqlread?query=...
như một truy vấn, họ mong đợi một đối tượng JSON, đây cũng là loại sẽ return a list of wines with their country and percentage of alcohol:
[{
"country": null,
"name": null,
"percentage_alcohol": null,
"percentage_alcohol>": 0,
"type": "/food/wine"
}]
Tất nhiên, chúng tôi sẽ phải thoát khỏi địa ngục này trước khi chuyển nó đến một URL, vì vậy truy vấn thực tế sẽ như sau:
fullurl = 'https://www.googleapis.com/freebase/v1/mqlread?query=%5B%7B%22percentage_alcohol%3E%22%3A+0%2C+%22country%22%3A+null%2C+%22type%22%3A+%22%2Ffood%2Fwine%22%2C+%22name%22%3A+null%2C+%22percentage_alcohol%22%3A+null%7D%5D'
Bây giờ,
r = requests.get(fullurl)
print r.status_code
>>> 400
vì trang web tuyên bố không thể phân tích truy vấn.
r2 = urllib2.urlopen(fullurl)
print r2.getcode()
>>> 200
Không có vấn đề ở đây, tôi nhận được sự trở lại thích hợp. Thật thú vị,
# This is the url of our requests.get request
print urllib2.urlopen(r.url).getcode()
>>> 200
Tại sao? Tôi có sử dụng mô-đun sai không? Hay là một lỗi trong số requests
?
Sử dụng mô-đun 'json', nếu bạn chưa sẵn sàng. – jdi