Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python从url请求json 我正在使用python刮取url,如代码blow中的url_Python_Json_Python Requests - Fatal编程技术网

python从url请求json 我正在使用python刮取url,如代码blow中的url

python从url请求json 我正在使用python刮取url,如代码blow中的url,python,json,python-requests,Python,Json,Python Requests,就像这次打击一样,这是一个非常好的结果 {'product_info': [{'pid': '1', 'product_type': '2'}]} {'product_info': [{'pid': '2', 'product_type': '2'}]} {'product_info': [{'pid': '3', 'product_type': '2'}]} {'product_info': [{'pid': '4', 'product_type': '2'}]} {'product_info

就像这次打击一样,这是一个非常好的结果

{'product_info': [{'pid': '1', 'product_type': '2'}]}
{'product_info': [{'pid': '2', 'product_type': '2'}]}
{'product_info': [{'pid': '3', 'product_type': '2'}]}
{'product_info': [{'pid': '4', 'product_type': '2'}]}
{'product_info': [{'pid': '5', 'product_type': '2'}]}
{'product_info': [{'pid': '6', 'product_type': '2'}]}
{'product_info': [{'pid': '7', 'product_type': '2'}]}
{'product_info': [{'pid': '8', 'product_type': '2'}]}
{'product_info': [{'pid': '9', 'product_type': '2'}]}
{'product_info': [{'pid': '10', 'product_type': '2'}]}
然后我想将生成的10行保存到一个json文件中,如下代码所示:

with open('sylist.json', 'w') as outfile:
    json.dump(r.json(), outfile, indent=4)

但是只有一个结果保存到json文件local中,他可以帮助我解决这个问题,非常感谢在一个典型的方法中,尝试下面的方法逐行写入结果,每次都不打开/关闭文件

with open('sylist.json', 'a+') as outfile:
    for i in range (1,n_index+1):
        link = base_link+str(i)
        r = requests.get(link)
        outfile.write("{}\n".format(json.dump(r.json(), outfile, indent=4)))

在一种典型的方法中,尝试以下方法逐行写入结果,每次都不打开/关闭文件

with open('sylist.json', 'a+') as outfile:
    for i in range (1,n_index+1):
        link = base_link+str(i)
        r = requests.get(link)
        outfile.write("{}\n".format(json.dump(r.json(), outfile, indent=4)))

让我扩展一下弗兰克的回答。 您正在for循环内发送请求,这意味着在循环的每次迭代中,pid的值都会被覆盖。因此,当您希望将其内容转储到输出文件时,pid仅保存最后一次迭代/请求中的内容。我建议采用以下方法之一解决您的问题:

  • 在for循环中包含编写组件(或者相反,正如frankak在回答中所建议的那样)
  • 不必每次都覆盖pid的内容,您可以将其直接附加到for循环中,如下所示:

    my_list = []
    for i in range (1,n_index+1):
        link = base_link+str(i)
        r = requests.get(link)
        pid = r.json()
        my_list.append(pid)
    
    with open('sylist.json', 'w') as outfile:
        json.dump(my_list, outfile, indent=4)
    

  • 让我扩展一下弗兰克的回答。 您正在for循环内发送请求,这意味着在循环的每次迭代中,pid的值都会被覆盖。因此,当您希望将其内容转储到输出文件时,pid仅保存最后一次迭代/请求中的内容。我建议采用以下方法之一解决您的问题:

  • 在for循环中包含编写组件(或者相反,正如frankak在回答中所建议的那样)
  • 不必每次都覆盖pid的内容,您可以将其直接附加到for循环中,如下所示:

    my_list = []
    for i in range (1,n_index+1):
        link = base_link+str(i)
        r = requests.get(link)
        pid = r.json()
        my_list.append(pid)
    
    with open('sylist.json', 'w') as outfile:
        json.dump(my_list, outfile, indent=4)
    

  • 使用append代替write::-
    将open('sylist.json','a')作为输出文件:
    使用append代替write:将open('sylist.json','a')作为输出文件:@slackware嘿,如果它对你有用,请接受它:)@slackware嘿,如果它对你有用,请接受它:)