to_csv只写下一行

# noinspection PyUnresolvedReferences
import json
import pandas as pd
import numpy as np
import requests
from lxml import html
import os
from bs4 import BeautifulSoup
import re
from operator import itemgetter
import csv
import demjson

#请求地址
url='https://ncov.dxy.cn/ncovh5/view/pneumonia'

#设置请求头
header={
    "User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}

#发送请求
response =requests.get(url=url, headers=header)

page=response.content.decode('utf-8')


#构建BeautifulSoup对象
soup = BeautifulSoup(page, 'lxml')

#根据id属性查找
script=soup.find(id="getAreaStat")
#活动标签中的文本内容
data = script.text

json_str = re.findall(r'\[.+\]', data)[0]

resut = json.loads(json_str)

# resultData = json.dumps(resut,ensure_ascii=False)

#print(type(resut))
#print(type(resut[1]))
#print(len(resut))
#print(resut[1])                     resut是列表

city=list()
keys=['provinceName','cities']
for i in range (len(resut)):
    if(i>2):
        out = itemgetter(*keys)(resut[i])
        city.append(resut[i].get('cities'))
        #print(out)
        #print(i,city)#现在每一个city都是一个字典,把字典转换成列表

#print(city)

a=[]
for headers in sorted(city[0][0].keys()):#把字典的键取出来
    a.append(headers)
header=a#把列名给提取出来,用列表形式呈现
#print(header)

value={}
for m in range (len(city)):
    for n in range(len(city[m])):
        value.update(city[m][n].items())
        #print(type(value))
        mid = pd.DataFrame(data=value, index=[0])
        #print(type(mid))
mid.to_csv('C:/Users/Administrator/Desktop/实训/city1.csv')

网上找了下说不能用循环,但是应该怎么弄?

因为你的mid就只有一行的数据 啊

你的mid放到了循环里面,而to_csv放到了循环外面,那当然记录的只是最后一个循环的结果了
应该怎么弄要看你到底想干什么
要么放弃csv,直接输出txt,一行一行输出即可
要么你的mid必须定义在循环外面,循环里面填充它,然后最后统一输出

value={}
for m in range (len(city)):
    for n in range(len(city[m])):
        value.update(city[m][n].items())
        #print(type(value))
mid = pd.DataFrame(data=value)
#print(type(mid))
mid.to_csv('C:/Users/Administrator/Desktop/实训/city1.csv')