【爬蟲】(五)數據存儲之CSV

date: 2017-02-14 17:05:03

一個完整的(大)數據處理可以分為這幾個階段:

  • 數據收集
  • 數據存儲
  • 數據建模
  • 數據分析
  • 數據變現。

Holi的項目進度,已經從入門到處理了。

第一步的數據收集基本已經完成。

現在是第二步的數據存儲。

講道理,不懂點前端知識還真不好下手。

看到一堆標簽也是很煩的,還好這些東西就想剝洋蔥一樣,一層一層剝開。

配合上《愛麗絲夢游仙境》的BeautifulSoup,就方便多了。

CSV( Comma-Separated Values,逗號分隔值)是存儲表格數據的常用文件格式。

Microsoft Excel 和很多應用都支持 CSV 格式,因為它很簡潔。

Python 的 csv 庫可以非常簡單地修改 CSV 文件,甚至從零開始創建一個 CSV 文件:

import csv  

csvFile = open("../files/test.csv", 'w+')
try:
    writer = csv.writer(csvFile)
    writer.writerow(('number', 'number plus 2', 'number times 2'))
    for i in range(10):
        writer.writerow( (i, i+2, i*2))
finally:
    csvFile.close()

這種方案來處理教務處的數據,就很方便。

這里拿處理課表的來說。

解析課表的網頁源碼會看到有一個table的標簽,這個很重要。

<table id="tableObj" width="99%" border="0" cellspacing="0" cellpadding="0" class="arranging_arrange">

確定了table和class,就看開始剝洋蔥了。

import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("課表url")
bsObj = BeautifulSoup(html)
# 看網頁源碼的class
table = bsObj.findAll("table",{"class":"arranging_arrange"})[0] 

#剝第一層洋蔥
rows = table.findAll("tr")
#存儲CSV
csvFile = open("../files/editors.csv", 'wt', newline='', encoding='utf-8')
writer = csv.writer(csvFile)

try:
    for row in rows:
        csvRow = []
        #繼續一層層剝洋蔥
        for cell in row.findAll(['td', 'th']):
            csvRow.append(cell.get_text())
        writer.writerow(csvRow)
finally:
    csvFile.close()

這樣就可以得到存儲在當前目錄的CSV文件了。

用Notepad++打開可以看,用excel打開會亂碼。

虐狗節,擼代碼,還有誰。

哈哈哈哈。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容