python爬取数据保存为csv时生成编号_将爬取到到数据以CSV格式存储
CSV文件存儲(chǔ)
CSV,全稱為Comma-Separated Values,中文可以叫做逗號(hào)分隔值或字符分隔值,其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)。該文件是一個(gè)字符序列,可以由任意數(shù)目的記錄組成,記錄間以某種換行符分隔。每條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號(hào)或者制表符。不過(guò)所有記錄都有完全相同的字段序列,相當(dāng)于一個(gè)結(jié)構(gòu)化表的純文本形式。它比Excel文件更為簡(jiǎn)潔,XLS文本是電子表格,它包含了文本、數(shù)值、公式和數(shù)據(jù)等內(nèi)容,而CSV中不包含這些內(nèi)容,就是特定字符分隔的純文本,結(jié)構(gòu)簡(jiǎn)單清晰。所以,有時(shí)候用CSV來(lái)保存數(shù)據(jù)是比較方便的。本節(jié)中,我們來(lái)講解Python讀取和寫入CSV文件的過(guò)程。
寫入這里首先來(lái)看一個(gè)最簡(jiǎn)單的例子:
首先,打開data.csv文件,然后指定打開的模式為w(即寫入),獲得文件句柄,隨后調(diào)用csv庫(kù)的writer( )方法初始化寫入對(duì)象,傳入該句柄,然后再調(diào)用writerow( )方法傳入每行的數(shù)據(jù)即可完成寫入。
運(yùn)行結(jié)束之后,會(huì)生成一個(gè)名為data.csv的文件,此時(shí)數(shù)據(jù)就成功寫入了。直接以文本形式打開的話,其內(nèi)容如下:
可以看到,寫入的文本默認(rèn)以逗號(hào)分隔,調(diào)用一次writerow( )方法即可寫入一行數(shù)據(jù)。用Excel打開的結(jié)果如下所示:
如果想要修改列與列之間的分隔符,可以傳入delimiter參數(shù),其代碼如下:
這里在初始化寫入對(duì)象時(shí)傳入delimiter為空格,此時(shí)輸出結(jié)果的每一列就是以空格分隔了,內(nèi)容如下:
另外,我們也可以調(diào)用writerows( )方法同時(shí)寫入多行,此時(shí)參數(shù)就需要為二維列表,例如:
輸出效果是相同的,內(nèi)容如下:
但是一般情況下,爬蟲爬取的都是結(jié)構(gòu)化的數(shù)據(jù),我們一般會(huì)用字典來(lái)表示。在csv庫(kù)中也提供了字典的寫入方式,示例如下:
這里先定義3個(gè)字段,用fieldnames表示,然后將其傳給DictWriter來(lái)初始化一個(gè)字典寫入對(duì)象,接著可以調(diào)用writeheader( )方法先寫入頭信息,然后再調(diào)用writerow( )方法傳入相應(yīng)的字典即可。最終寫入的結(jié)果是完全相同的,內(nèi)容如下:
這樣就可以完成字典到CSV文件的寫入了。
另外,如果想追加寫入的話,可以修改文件的打開模式,即將open( )函數(shù)的第二個(gè)參數(shù)改為a,代碼如下:
這樣在上面的基礎(chǔ)上再執(zhí)行這段代碼,文件內(nèi)容便會(huì)變成:
如果要寫入中文內(nèi)容的話,可能會(huì)遇到字符編碼的問(wèn)題,此時(shí)需要給open( )參數(shù)指定編碼格式。比如,這里寫入一行包含中文的數(shù)據(jù),代碼需要改寫如下:
這里需要給open( )函數(shù)指定編碼,否則可能會(huì)發(fā)生編碼錯(cuò)誤。
另外,如果接觸過(guò)pandas等庫(kù)的話,可以調(diào)用DataFrame對(duì)象的to_csv( )方法來(lái)將數(shù)據(jù)寫入CSV文件中。
讀取
我們同樣可以使用csv庫(kù)來(lái)讀取CSV文件。例如,將剛才寫入的文件內(nèi)容讀取出來(lái)。相關(guān)代碼如下:
運(yùn)行結(jié)果如下:
這里我們構(gòu)造的是Reader對(duì)象,通過(guò)遍歷輸出了每行的內(nèi)容,每一行都是一個(gè)列表形式。注意,如果CSV文件中包含中文的話,還需要指定文件編碼。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python爬取数据保存为csv时生成编号_将爬取到到数据以CSV格式存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浙商证券是国企吗
- 下一篇: websocket python爬虫_p