记录一下在做数据收集时,遇到的问题
最近在做爬虫数据采集的时候,在最后的文件存储上出现了一个问题。
问题大致是这样的:
我爬取的内容是2015年到2020年,5年之内的新闻标题和对应的类别。
本来一切都正常 。
但是当程序运行完成之后,发现自己的数据文件中只存入了800多条数据。
这显然是不符合标准的。
要知道,光一天的数据就有500多条,怎么可能5年只有800多条数据。
我当时的代码是这样的:
csv_file=open('data.csv','w',newline='',encoding='utf-8')
writer=csv.writer(csv_file)
writer.writerow(['category','title'])
在网上找了下open函数的各种模式
终于发现了问题
r-->只读模式。默认模式,文件必须存在,不存在则抛出异常。
w-->只写模式。不可读,文件存在则删除文件内容,不存在则创建。
a-->追加模式。可读,文件存在则追加在文件末尾,不存在则创建。
其实就是,在使用“w”模式时,文件只能写入一次循环爬到的内容,在开启下一次循环时,指针会指向文件的第0行,重新从第0行开始写入,从而覆盖掉上一次循环写入的内容。
而使用“a”模式时,文件中指针永远指向的都是文件末尾,在下一次循环开启时,文件会在之前写入内容的末尾继续添加新内容。
如果在后面加上“+”
表示可读可写
修改后的代码:
csv_file=open('data.csv','a+',newline='',encoding='utf-8')
writer=csv.writer(csv_file)
writer.writerow(['category','title'])
之后就可以正常存储数据了。