2017-09-02 76 views
1

我想从这个URL得到JSON响应。不同的JSON repsonse在python中使用请求模块

但我在浏览器中看到的JSON与我从python的请求响应中获得的不同。

的代码和它的输出: -

#code 
import requests 
r = requests.get("https://www.bigbasket.com/product/get-products/?slug=fruits-vegetables&page=1&tab_type=[%22all%22]&sorted_on=popularity&listtype=pc") 
print("Status code: ", r.status_code) 
print("JSON: ", r.json()) 
print("Headers:\n",r.headers()) 

#output 
Status code: 200 
JSON: '{"cart_info": {}, "tab_info": [], "screen_name": ""}' 
Headers: 
{'Content-Type': 'application/json', 
'Content-Length': '52', 
'Server': 'nginx', 
'x-xss-protection': '1; mode=block', 
'x-content-type-options': 'nosniff', 
'x-frame-options': 'SAMEORIGIN', 
'Access-Control-Allow-Origin': 'https://b2b.bigbasket.com', 
'Date': 'Sat, 02 Sep 2017 18:43:51 GMT', 
'Connection': 'keep-alive', 
'Set-Cookie': '_bb_cid=4; Domain=.bigbasket.com; expires=Fri, 28-Aug-2037 18:43:51 GMT; Max-Age=630720000; Path=/, ts="2017-09-03 00:13:51.164"; Domain=.bigbasket.com; expires=Sun, 02-Sep-2018 18:43:51 GMT; Max-Age=31536000; Path=/, _bb_rd=6; Domain=.bigbasket.com; expires=Sun, 02-Sep-2018 18:43:51 GMT; Max-Age=31536000; Path=/'} 

这是Chrome会显示在开发工具是什么: -

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 4206 
Server: nginx 
x-xss-protection: 1; mode=block 
x-content-type-options: nosniff 
Content-Encoding: gzip 
x-frame-options: SAMEORIGIN 
Access-Control-Allow-Origin: https://b2b.bigbasket.com 
Date: Sat, 02 Sep 2017 15:43:20 GMT 
Connection: keep-alive 
Vary: Accept-Encoding 
Set-Cookie: ts="2017-09-02 21:13:20.193"; Domain=.bigbasket.com; expires=Sun, 02-Sep-2018 15:43:20 GMT; Max-Age=31536000; Path=/ 
Set-Cookie: _bb_rd=6; Domain=.bigbasket.com; expires=Sun, 02-Sep-2018 15:43:20 GMT; Max-Age=31536000; Path=/ 

还试图分离查询字符串,然后将其指定为PARAMS说法,但它给相同的结果。

+0

看来,您第一次访问该地址,它会重定向您;尽管如此,随后每一次你都没有重定向。您是否尝试再次提出请求? –

+0

浏览器响应的内容是什么?我在浏览器中看到了几乎空的JSON。 –

+0

您必须先获取cookie。使用'requests.Session' –

回答

0
import requests 
s = requests.session() 
s.get("https://www.bigbasket.com/product/get-products/?slug=fruits-vegetables&page=1&tab_type=[%22all%22]&sorted_on=popularity&listtype=pc") 
r = s.get("https://www.bigbasket.com/product/get-products/?slug=fruits-vegetables&page=1&tab_type=[%22all%22]&sorted_on=popularity&listtype=pc") 
print("Status code: ", r.status_code) 
print("JSON: ", r.json()) 
+0

尝试一次,它适用于我。 –