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),最后写入列表。手打分析,望采纳