【发布时间】:2020-06-27 13:10:19
【问题描述】:
我尝试从站点 XHR 请求数据,然后将其保存为 CSV。响应是 JSON,响应的一部分是嵌套的。 我有两个问题:
- 首先:它不会迭代。它只返回第一个对象的数据,但在两行中。除了第一行有 floorPlan:AltText 和第二行有 floorPlan:url 的最后一列之外,两行上的数据相同
- 第二:我不喜欢我的某些字符“'charmap'编解码器无法在位置 147:...编码字符'\u2560'。”。似乎是一些 UTF-8 问题
响应的格式是(为了便于阅读,这里缩短了):
[{
"id":"67d3686f-848b-e911-a971",
"name":"1302",
"url":"/site/",
"residenceType":"3",
"objectStatus":"1",
"price":570000.0,
"fee":245.0,
"apartmentNumber":"1302",
"address":"Major street 8",
"rooms":4.0,
"floor":3.0,
"primaryArea":92.0,
"inhabitDate":"2022-02-28T23:00:00Z",
"floorPlan":{"url":"/externalfiles/image/1.jpg","altText":"Drawing"}},
{"id":"69d3686f-848b-e911-a971-000d3ab795ed",
"name":"1303",
"url":"/site2/",
"residenceType":"3",
"objectStatus":"1",
"price":320000.0,
"fee":113.0,
"apartmentNumber":"1303",
"address":"Major Street 8",
"rooms":2.0,
"floor":3.0,
"primaryArea":47.0,
"inhabitDate":"2022-02-28T23:00:00Z",
"floorPlan":{"url":"/externalfiles/image/2.jpg","altText":"Drawing"}},
我的代码是:
import requests
import pandas as pd
import csv
import json
h = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
u = "https://cdn-search-standard-prod.azureedge.net/api/v1/search/getstageobjects/23d8dbc1-005a-e911-a961-000d3aba65fd"
x = requests.get(u,headers=h).json()
f = csv.writer(open("test.csv", "w+"))
f.writerow(["id", "name", "residenceType", "objectStatus", "price", "fee", "apartmentNumber"])
for x in x:
f.writerow([x["id"],
x["name"],
x["residenceType"],
x["objectStatus"],
x["price"],
x["fee"],
x["apartmentNumber"],
x["floorPlan"]["url"]])
df=pd.DataFrame(x)
df.to_csv(r'C:\Users\abc\Documents\Python Scripts\file_20200627.csv', index=False, sep=';',encoding='utf-8')
【问题讨论】:
标签: python json xmlhttprequest export-to-csv