python中的循环和.json解析

python中的循环和.json解析,python,python-3.x,Python,Python 3.x,嗨,我在理解循环和搜索.json时遇到了一些问题。我想从一个网站获取.json,然后从['body']检索25个项目,然后用新的['body']重新启动一个新的.json页面并检索这些项目。最后,将所有数据发送到.txt文件。 这是我的密码 import json import requests #Settings user_id = 29851266 page_num= 1 #Finds user data max_p_f = requests.get('http://someforum/u

嗨,我在理解循环和搜索.json时遇到了一些问题。我想从一个网站获取.json,然后从['body']检索25个项目,然后用新的['body']重新启动一个新的.json页面并检索这些项目。最后,将所有数据发送到.txt文件。 这是我的密码

import json
import requests

#Settings
user_id = 29851266
page_num= 1
#Finds user data
max_p_f = requests.get('http://someforum/users/'+str(user_id)+'/posts.json?page='+str(page_num))
json_string = max_p_f.text
obj = json.loads(json_string)
max_page = obj['meta']['max_page']
current_page = obj['meta']['page']  
posts_count = obj['meta']['posts_count']
username = obj['users'][0]['username']
count = 0
start_page = 1

while page_num <= max_page:
    requests.get('http://www.someforum/users/'+str(user_id)+'/posts.json?page='+str(page_num))
    page_num += 1
print("Page "+str(start_page + 1)+ " complete")
    for x in range(0, 25):
        data = obj['posts'][x]['body']
        file = open(username+"_postdata.txt", 'a')
        file.write("\n =============="+str(count)+"==================\n")
        file.write(data)
        count += 1
        file.close()
导入json
导入请求
#背景
用户id=29851266
页码=1
#查找用户数据
max\u p\u f=请求。获取('http://someforum/users/'+str(user_id)+'/posts.json?page='+str(page_num))
json_string=max_p_f.text
obj=json.loads(json_字符串)
max_page=obj['meta']['max_page']
当前页面=obj['meta']['page']
posts\u count=obj['meta']['posts\u count']
username=obj['users'][0]['username']
计数=0
开始页面=1

当page_num时,我将首先对请求使用本机的
.json()
,而不是将其从文本转换为json,因此:

requests.get('http://www.someforum/users/'+str(user_id)+'/posts.json?page='+str(page_num)).json()

另外,您只是在循环中使用一个请求字符串,实际上并没有在循环中使用新的页码保存新的obj

所以在你的圈子之外:

max\u p\u f='1http://someforum/users/“+str(user_id)+”/posts.json?page=”

在你的循环中应该是:

obj=requests.get(max_p_f+str(page_num)).json()

下面是一个示例片段,我将如何做一些非常类似的事情:

base_url = 'http://somewebsite/bunchofbjectsonapage.json?page=' 
max_page = 3
current_page = 0
while current_page <= max_page:
    current_page = current_page + 1
    obj = requests.get(base_url + str(current_page)).json()
    for item in obj:
        name = item['company_name']
        cat = item['category']
        print([name,cat])
base\u url='1〕http://somewebsite/bunchofbjectsonapage.json?page=' 
最大页数=3
当前页面=0

在当前页面中,我很惊讶您从第一页获取数据,因为您没有保存
请求
响应。是否将其保存到
obj
?您是否可以通过浏览器手动访问每个新URL中的
json
数据(在
start\u页面
之后的页面),以确保可以访问新的
json
页面?是的,每个新页面都可以访问。还将其保存到obj中。您的代码中似乎有一些错误,
obj
从何处获取其值?何时将原始json中的
请求返回的对象转换为dict?您还在不同的行中将
用户名
替换为
用户id
。您能否描述预期和实际行为以及它们的区别?