鱼C论坛

 找回密码
 立即注册
查看: 1891|回复: 4

[已解决]数据写入csv文件时出错

[复制链接]
发表于 2022-7-27 13:39:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import requests
import csv
from concurrent.futures import  ThreadPoolExecutor
def get_url(page):
    url = 'http://www.xinfadi.com.cn/getPriceData.html'
    headers = {
    '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',
    'Referer' : 'http://www.xinfadi.com.cn/priceDetail.html'


    }
    data = {
    'limit': 20,
    'current': page,
    'pubDateStartTime': '',
    'pubDateEndTime': '',
    'prodPcatid': '',
    'prodCatid': '',
    'prodName': ''

    }
    Name = []
    LowPrice  = []
    AvgPrice = []
    High_price = []
    SpecInfo  = []
    Place = []
    UnitInfo  = []
    Date = []


    response = requests.post(url,headers=headers,data=data)
    for i in range(20):
        list1 = []
        name = response.json()['list'][i]['prodName']
        lowPrice = response.json()['list'][i]['lowPrice']
        avgPrice = response.json()['list'][i]['avgPrice']
        high_price = response.json()['list'][i]['highPrice']
        specInfo = response.json()['list'][i]['specInfo']
        place = response.json()['list'][i]['place']
        unitInfo = response.json()['list'][i]['unitInfo']
        date = response.json()['list'][i]['pubDate']
        # Name.append(name)
        # LowPrice.append(lowPrice)
        # AvgPrice.append(avgPrice)
        # High_price.append(high_price)
        # SpecInfo.append(specInfo)
        # Place.append(place)
        # UnitInfo.append(unitInfo)
        # Date.append(date)
        list1.extend((name,lowPrice,avgPrice,high_price,specInfo,place,unitInfo,date))
        print(list1)#打印所需要的数据
        save_Data(list1)#写入所需的数据,此处写入的数据不对
    print('第%d页爬取完毕'% page)


def save_Data(data): #目标函数

    with open('price.csv','w',encoding='utf-8' ) as f:
        csvwriter = csv.writer(f)
        csvwriter.writerow(data)

if __name__ == '__main__':
    for i in range(1,10):
        datas = get_url(i)
最佳答案
2022-7-27 16:42:38
ZhKQYu 发表于 2022-7-27 16:42
以w模式写入就会那样  造成数据覆盖,以a模式追加写入就好
def save_Data(data): #目标函数

    with open('price.csv','a',encoding='ANSI' ) as f:
        csvwriter = csv.writer(f)
        csvwriter.writerow(data)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-27 14:21:54 From FishC Mobile | 显示全部楼层
首先要保证你爬到的数据是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-27 15:45:39 | 显示全部楼层
wp231957 发表于 2022-7-27 14:21
首先要保证你爬到的数据是对的

首先要确定你看了代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-27 16:42:04 | 显示全部楼层
以w模式写入就会那样  造成数据覆盖,以a模式追加写入就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-27 16:42:38 | 显示全部楼层    本楼为最佳答案   
ZhKQYu 发表于 2022-7-27 16:42
以w模式写入就会那样  造成数据覆盖,以a模式追加写入就好
def save_Data(data): #目标函数

    with open('price.csv','a',encoding='ANSI' ) as f:
        csvwriter = csv.writer(f)
        csvwriter.writerow(data)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 12:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表