为什么我在打开浏览器和使用请求 python 时无法获得相同的 json 结果?



我正在尝试刮webhttps://jendela360.com/apartemen/jakarta-barat并找到了用于提供json文件的apihttps://api.jendela360.com/api/site/apartment-search?price=0&sort=流行&page=1&aptId=&半径=5&纬度=0&经度=0&filter_type=区域&面积=雅加达;rowsPerPage=100。当我在浏览器中打开api时,我可以看到所有的json结果。

然而,当我尝试我的代码:

header={
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'id-ID,id;q=0.9',
'cache-control': 'max-age=0',
'cookie': '_ga=GA1.2.23833481.1667102529; _gid=GA1.2.3408225.1667102529; _fbp=fb.1.1667102531924.49727250',
'sec-ch-ua': '"Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}

location='jakarta-barat'
resp = requests.get(f'https://api.jendela360.com/api/site/apartment-search?price=0&sort=popular&page=1&aptId=&radius=5&latitude=0&longitude=0&filter_type=area&area={location}&rowsPerPage=12',headers=header)
x=resp.json()['data']
print(x)

它返回数据=[]

请帮忙,回应是200。但是,加载的数据为null。

这应该按预期工作,不需要传递任何额外的标头,特别是acceptAcceptencoding,根据您的响应,您需要设置标头application/json

import requests
location='jakarta-barat'
url = f"https://api.jendela360.com/api/site/apartment-search?price=0&sort=popular&page=1&aptId=&radius=5&latitude=0&longitude=0&filter_type=area&area={location}&rowsPerPage=100"
payload={}
headers = {}
response = requests.get(url, headers=headers, data=payload)
x=response.json()['data']
print(x)

最新更新