【发布时间】:2018-10-18 02:22:09
【问题描述】:
我在这里想要做的是,我想在每个 url 的 url 中更改一个用户 ID,然后从 urls 获取输出。
到目前为止我做了什么:
import urllib
import requests
import json
url="https://api.abc.com/users/12345?api_key=5632lkjgdlg&_format=_show"
data=requests.get(url).json()
print (data['user'])
(我在打印内容中输入“用户”,因为它以 json 格式提供有关焦点用户的所有信息)
我的问题是我想通过提供另一个数字(任何随机数)来更改用户 ID(在此 url 示例中为 12345),然后从我输入的每个 url 中获取输出。例如,更改为 5211,例如,并得到结果。然后改成 959444 得到结果,以此类推。我认为我需要使用循环来通过更改 url 中的数字来进行迭代,但由于难以拆分原始 url 然后只更改内部的用户 ID 号而一直未能做到这一点。谁能帮帮我? 非常感谢你。
=====================下面的下一个问题================
感谢您之前的回答!我试图更多地根据答案构建我的代码并做到了,但遇到了另一个问题。我可以遍历并以 json 格式获取每个用户的信息。该格式给了我一个单引号(而不是双引号)和一个奇怪的 u' 符号在 json 格式的每个键前面,但我可以解决这个问题。不管怎样,我清理了 json 格式,并把它做成了一个完美整洁的 json 格式。 我的计划是将每个 json 转换为一个 csv 文件,但想将我抓取的所有 json 堆叠到一个 csv 文件中。例如,user1 上的第一个 json 格式将被转换为 csv 文件,user1 将被视为 row1,json 中的所有键都是列名,所有对应的值都是对应列的值。我抓取的第二种 json 格式将转换为相同的 csv 文件,但在第二行,依此类推。
from pandas.io.json import json_normalize
eg_data=[data['user']]
df=pd.DataFrame.from_dict(json_normalize(data['user']))
print (df)
df.to_csv('C:/Users/todd/Downloads/eg.csv')
print (df)
所以,我发现 json_normalize 将嵌套的括号变平,因此它在实际示例中很有用。另外,我尝试使用 pandas 数据框将其制成表格。在这里我有两个问题: 1. 如何将我一个一个地抓取的每个 json 格式堆叠在一个 csv 文件中? (如果有另一种方法可以在不使用熊猫框架的情况下做到这一点,那也将不胜感激) 2. 据我所知,熊猫数据框不会给你输出,除非每一行都有相同的列数。但就我而言,因为我抓取的每种 json 格式都有 10 列或 20 列,具体取决于 json 格式是否具有嵌套括号。在这种情况下,如何堆叠所有行并将其放在一个 csv 文件中? 评论或问题将不胜感激。
【问题讨论】:
标签: json python-3.x pandas loops url