Day 12 - [爬虫] 02-储存爬虫资料-CSV格式

接续上一篇,昨天已经把问答集的内容都爬下来了,再来要把内容整理成下一个阶段(训练模型),方便使用的格式。
完整的程序码可以参考: https://github.com/dreambo4/MOHW-QandA

CSV

什麽是 CSV?

逗号分隔值(Comma-Separated Values,CSV),其档案以纯文字形式储存表格资料。纯文字意味着该档案是一个字元序列,不含必须像二进位数字那样被解读的资料。
-- form wiki

看图吧!

原始的 CSV 就只是一个纯文字档,各个栏位以 , 隔开。不同笔资料,以换行区隔。
首列通常是栏位名称。
csv_text

特别的是,刚提过 CSV 储存的资料是个表格嘛,所以我们也可以使用 Excel 或 LibreOffice Calc 编辑档案,很方便。
csv_excel

为什麽不用资料库?

CSV 的优点是好携带 & 好转移,因为是纯文字的关系,比较不会有需要用特定软件开启的状况,一般的文字编辑器(记事本、Sublime、Vim...)就可以开启。本系统资料储存主要使用 CSV 格式,而非资料库的原因是,目前没有需要。爬虫的步骤只会做一次,不需要每次建置模型都爬虫一次取得资料,因此初始的资料集内容基本是固定的。而程序建模型的过程,也只会有「读取全部资料」的动作,没有条件查询、新增、修改、删除。因此评估後,我们使用 CSV 作为资料及储存的格式。

这是本系统未使用资料库的原因,不一定适合你的状况,请自行评估调整。

主要程序

主要的程序收两个参数,filename 是生成档案的名字;datelist 是要存入档案的内容,型态是 list。
这个 CSV 的套件,提供很多方便的功能。首先写入栏位名称,再用回圈的方式,一笔一笔将内容写入档案。

def writeCsv(filename, dataList):
    with open(filename+'.csv', 'w', newline='') as csvfile:
        # 定义栏位
        fieldnames = ['q', 'a', 'url']

        # 将 dictionary 写入 CSV 档
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        # 写入第一列的栏位名称
        writer.writeheader()

        # 写入资料
        for qa in dataList:
            writer.writerow(qa)

Colab 另个方便的地方,执行後,档案可以直接下载~
get_file

结语

爬虫的文章告一段落,接下来会是 TF-IDF 和模型建置相关的部分。明天见!

参考资料



<<:  12 终止游戏

>>:  Day 14多子元素元件Multi-child

Day 16 : 特徵工程 tf.Tramsform 实作

接续 Day 15 的 tf.Tramsform 介绍,今日进行实作,先以TensorFlow Tr...

Day 2 - Using Google reCAPTCHA with ASP.NET Web Forms C#「我不是机器人」验证

=x= 🌵 CONTACT Page 寄信页的「我不是机器人」验证功能,後端实作。 Google r...

[Day24] Flutter with GetX Shimmer

Shimmer iOS Swift的话是类似SkeletonView 一般用在等待的时候 像是API...

Day29 -- Video Speed Controller

目标 今天要来做的是播放速度控制器,可以透过游标移动控制播放速度 Step1 const speed...

Day 16 - 不小心断赛之 Lifecycle

大意失荆州,这就是人生,因为以为有写,不小心就断赛了;不过,秉持着坚持的精神,我还是想继续写完。 今...