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打開會亂碼。
虐狗節,擼代碼,還有誰。
哈哈哈哈。