爬虫爬出的数据,print输出可以全部输出,但是写入CSV文件时只能写最后一行

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
import requests
import csv
url1 = 'http://category.dangdang.com/'

url2 = 'cp01.58.03.00.00.00.html'

url3 = url1 + url2
f = open('book.csv', mode='w',encoding='utf-8')
csvwriter = csv.writer(f)
resp = requests.get(url3)
obj = re.compile(r'</div>.*?单品标题" target="_blank" > (?P<name>.*?)</a>.*?target="_blank" title="(?P<chinapublisher>.*?)">.*?p">(?P<commentnum>.*?)</a></p>.*?单品出版社(?P<foreignpublisher>.*?)>', re.S)
result = obj.finditer(resp.text)
for it in result:
    print(it.group("name"))
    print(it.group("chinapublisher"))
    print(it.group("commentnum"))
    print(it.group("foreignpublisher"))
    dic = it.groupdict()
csvwriter.writerow(dic.values())
print('over!')

# -*- coding:utf-8 -*-

import requests
import csv,re

url1 = 'http://category.dangdang.com/'

url2 = 'cp01.58.03.00.00.00.html'

url3 = url1 + url2
f = open('book.csv', mode='w', encoding='utf-8')
csvwriter = csv.writer(f)
resp = requests.get(url3)
obj = re.compile(
    r'</div>.*?单品标题" target="_blank" > (?P<name>.*?)</a>.*?target="_blank" title="(?P<chinapublisher>.*?)">.*?p">(?P<commentnum>.*?)</a></p>.*?单品出版社(?P<foreignpublisher>.*?)>',
    re.S)
result = obj.finditer(resp.text)
print(result)

for it in result:
    # print(it)
    print(it.group("name"))
    print(it.group("chinapublisher"))
    print(it.group("commentnum"))
    print(it.group("foreignpublisher"))
    dic = it.groupdict()
    csvwriter.writerow(dic.values())              #你上面代码是这个位置问题,改成这样就好了
print('over!')

你好,在你代码的第17行哪里,mode=w, w写入数据会清空之前的,你可以改为 a或a+ ,更多的可以看看这个https://blog.csdn.net/weixin_51322574/article/details/116902072

很简单,循环里面dic是=,当然最终就是循环最后一次的赋值,建议增加列表变量,l=[] 在循环中添加l.append(dic),最后写入列表。手打分析,望采纳