【爬蟲】(七)Python資料儲存之MySQL(下)
date: 2017-02-28 18:44:10
上一篇關於Python和MySQL的簡單聯調做了學習。
這次主要是將這個過程再優化擴大點。
對教務處需要的資料都進行了處理存進資料庫了。
也是對bug問題的總結。
我的程式設計哲學
其實這裡面一直有一個問題的。
之前是Holi的後臺一直想要我們把資料存成CSV格式的他再讀取存進資料庫。
可是這件事情在Python這邊就可以完成啊。
後面就還是用著這樣的想法去做: 從CSV檔案裡讀取存進MySQL。
最直接的方法應該是:一步到位直接存進MySQL。
但是我還是認為,先把這個功能實現了才是最重要的。
其他的後面可以慢慢改。
這大概也就是Python的程式設計思想,著重於解決問題,而不是拘泥於語言語法。
圖形化MySQL
有同學給我推薦了兩款Navicat和SQLyog。
有另外一個隊友也在用SQLyog,我就選它了。
確實是比命令列好用多了。
也不容易出問題。
在一個資料庫裡建了學生資訊表,成績表,課表,公告通知表,我的訊息表。
剩下的問題就是從CSV檔案裡讀取並存進MySQL。
CSV To MySQL
與上一篇一樣,整體思路是先把爬下來的資料給寫入col列,然後把爬下來的資料依行插入。
writer.writerow(('上課學期','課程編號','課程名稱','課程學分','學位課' ,'成績','獲得學分','備註'))
insert的資料就和在SQLyog建好表匹配。
sql = "insert into `score`(`term`,`course_id`,`name`,`credit`,`degree_course`,`score`,`gain_credit`,`remarks`)values(%s,%s,%s,%s,%s,%s,%s,%s)"
之前存進的CSV檔案有空格的問題也解決了。
有函式strip()、rstrip()、lstrip()可以解決這個問題。
cursor.execute(sql, (
e['上課學期'].strip(), e['課程編號'].strip(),e['課程名稱'].strip(), e['課程學分'].strip(), e['學位課'].strip(), e['成績'].strip(),e['獲得學分'].strip(), e['備註'].strip(),))
其實,規則的網頁還是比較好處理的。
而不規則的網頁處理起來還得多想想。tr、td、th、li標籤分配的很奇怪。
比如我的訊息這一頁面是這樣處理的:
try:
for row in rows:
csvRow = []
for td in row.findAll('td')[1:]:
for li in td.findAll('li')[0::2]:
csvRow.append(li.get_text().strip().replace(' ', ''))
writer.writerow(csvRow)
finally:
csvFile.close()
它的網頁原始碼第一個td裡面都是沒用的,到後面的li標籤甚至要取奇數,因為它只有三個,而第二個是空的。
總之,花了點時間完美的存進去了。
也算是體會到正則的強大和我還不會。
最後的幾張表還是很規則的。
學生資訊:
課表:
成績:
培養計劃:
公告通知:
bug總結
KeyError:
這是在把CSV檔案存進MySQL裡出現的錯誤。
研究了好久把col列寫對著啊,字典怎麼會出錯。
事實證明人變懶就會出錯。
模擬登入用的是同一個程式,在同一個程式的基礎上改。
開啟的CSV檔案卻沒有改過來,字典必然不會對。。。低階錯誤。
blank error:
之前的Python前輩們都會把Python縮排當成一個梗來玩。
可是當程式多了起來,這就真的很容易犯錯。
除了這個問題,在for迴圈裡也很容易出錯。
它也沒有明顯的標示,全憑感覺。
就是我覺得它應該是縮排了吧,其實還差好多。
我覺得我需要一把遊標卡尺來解決這個bug.
相關文章
- Python爬蟲之使用MongoDB儲存資料Python爬蟲MongoDB
- 爬蟲系列:使用 MySQL 儲存資料爬蟲MySql
- 【0基礎學爬蟲】爬蟲基礎之資料儲存爬蟲
- 爬蟲學習整理(3)資料儲存——Python對MySql操作爬蟲PythonMySql
- [python爬蟲] Selenium爬取內容並儲存至MySQL資料庫Python爬蟲MySql資料庫
- 爬蟲資料儲存--基於MonogoDB爬蟲MonoGo
- Python爬蟲學習筆記(三、儲存資料)Python爬蟲筆記
- 儲存資料到MySql資料庫——我用scrapy寫爬蟲(二)MySql資料庫爬蟲
- [python爬蟲] BeautifulSoup爬取+CSV儲存貴州農產品資料Python爬蟲
- 【Python3網路爬蟲開發實戰】5-資料儲存-2-關係型資料庫儲存-1 MySQL儲存Python爬蟲資料庫MySql
- 【0基礎學爬蟲】爬蟲基礎之檔案儲存爬蟲
- Python爬蟲之資料解析(XPath)Python爬蟲
- [python爬蟲] 招聘資訊定時系統 (一).BeautifulSoup爬取資訊並儲存MySQLPython爬蟲MySql
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-1 TXT文字儲存Python爬蟲
- 【Python3網路爬蟲開發實戰】5-資料儲存-3-非關係型資料庫儲存-2 Redis儲存Python爬蟲資料庫Redis
- 【Python3網路爬蟲開發實戰】5-資料儲存-3-非關係型資料庫儲存-1 MongoDB儲存Python爬蟲資料庫MongoDB
- Python爬蟲教程-14-爬蟲使用filecookiejar儲存cookie檔案(人人網)Python爬蟲CookieJAR
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-2 JSON檔案儲存Python爬蟲JSON
- 爬蟲學習筆記(2)使用MongoDB儲存拉鉤資料爬蟲筆記MongoDB
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- [python 爬蟲]第一個Python爬蟲,爬取某個新浪部落格所有文章並儲存為doc文件Python爬蟲
- #第9篇分享:python資料儲存-MySQL資料庫PythonMySql資料庫
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- Python 爬蟲實戰之爬拼多多商品並做資料分析Python爬蟲
- 利用Python爬蟲爬取天氣資料Python爬蟲
- Python爬蟲之BeautifulSoupPython爬蟲
- [Python Scrapy爬蟲] 二.翻頁爬取農產品資訊並儲存本地Python爬蟲
- Python爬蟲之煎蛋網圖片下載Python爬蟲
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Hive之 資料儲存Hive
- Python【爬蟲實戰】提取資料Python爬蟲
- 【機器學習】資料準備--python爬蟲機器學習Python爬蟲
- ThinkPHP之七牛雲儲存PHP
- MySQL 資料庫儲存引擎MySql資料庫儲存引擎
- Python 爬蟲(七)-- Scrapy 模擬登入Python爬蟲
- python爬蟲總是爬不到資料,你需要解決反爬蟲了Python爬蟲
- MySql的資料儲存之B+樹(淺談)MySql