python爬取的数据写入excel总是覆盖上一条?(pytho

2020-04-10  本文已影响0人  demoxjl

run.bat文件

@echo off
cd 
python new.py
@echo 5秒后窗口关闭
@Rem 保存窗口5秒
@ping 127.0.0.1 -n 5 >nul

写入.csv文件的时候,判断该文件是否存在,若不存在写入头部标题

#!/usr/bin/python3
#coding: utf-8
#create time: 2020-04-9
#create by:lxj
#new.py


from xml.etree import ElementTree  #解析xml
import time
import xlrd
import xml.dom.minidom #导入处理xml文件的模块
import pandas as pd
import xlwt #写入excel文件
import csv
import os
# from xlutils.copy import copy


# xml.etree.ElementTree.fromstring(text):从字符串常量解析XML,XML()方法解析的方式也一样,它们返回的都是一个Element实例
def readToWrite(response):
    str_val = ElementTree.XML(response)
    # print(str_val,23)
    head = str_val.find('Head')
    ErrorCode = head.find('ErrorCode').text
    contentList = []
    title = []
    # contentTxt = ''
    if ErrorCode == '0000':
        vehicleInfo = str_val.find('Body').find('VehicleInfo')
        for child in vehicleInfo:
            contentList.append(child.text)
            title.append(child.tag)
        # contentTxt = ','.join(map(str,contentList))
        write_csv('check_car1.csv', title, contentList)
        
                
            
def write_csv(fileName,head, data):
    #参数a,打开一个文件用于追加,若文件不存在会自动新建,已存在,文件指针将放在文件的结尾,将新内容写到已有内容之后
        #check_car1.txt
        isExistFile = os.path.exists(fileName) #True/False

        with open(fileName,'a', encoding='utf-8',newline='') as f: 
            writer = csv.writer(f, dialect='excel')
            #检查写入的文件是否有内容,若无内容写入头部
            if isExistFile:
                writer.writerow(data)
            else:
                writer.writerow(head)
                writer.writerow(data)
           
                                           
    
        

if __name__ == "__main__":
    
    response ='<?xml version="1.0" encoding = "GBK"?>'\
        '<Packet type="RESPONSE" version="1.0">'\
            '<Head>'\
                '<RequestType>C04</RequestType>'\
                '<RequestCode>1</RequestCode>'\
                '<ErrorCode>0000</ErrorCode>'\
                '<ErrorMessage>成功</ErrorMessage>'\
            '</Head>'\
            '<Body>'\
                '<VehicleInfo>'\
                    '<VIN>AWDDDwe98</VIN>'\
                    '<LicensePlateNo>粤AC6789</LicensePlateNo>'\
                    '<LicensePlateType>01</LicensePlateType>'\
                    '<EngineNo>XB82061103</EngineNo>'\
                    '<PMVehicleType>03</PMVehicleType>'\
                    '<PMUserNature>03</PMUserNature>'\
                    '<IneffectualDate>20200809</IneffectualDate>'\
                '</VehicleInfo>'\
            '</Body>'\
    '</Packet>'
    readToWrite(response)
上一篇 下一篇

猜你喜欢

热点阅读