python中的循环和.json解析
嗨,我在理解循环和搜索.json时遇到了一些问题。我想从一个网站获取.json,然后从['body']检索25个项目,然后用新的['body']重新启动一个新的.json页面并检索这些项目。最后,将所有数据发送到.txt文件。 这是我的密码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
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
。您能否描述预期和实际行为以及它们的区别?