【爬蟲】(七)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標籤甚至要取奇數,因為它只有三個,而第二個是空的。
總之,花了點時間完美的存進去了。
也算是體會到正則的強大和我還不會。
最後的幾張表還是很規則的。
學生資訊:
![2847713-667512b212519597.jpg](https://i.iter01.com/images/51bb0cef40cbdaa25187d109a0a90fc5d4310b6672eca79a179e396cef0a16dc.jpg)
課表:
![2847713-eee98e67c7016488.jpg](https://i.iter01.com/images/cfd4e13848f4e7676370200e16a8a984880b8a216c56bd62420fe16c93cbd4eb.jpg)
成績:
![2847713-541c70fa5062ab85.jpg](https://i.iter01.com/images/f2adee37df68c63158ffa5bccadd1f7fab8e453a75aa5d2926524fe29387bb0a.jpg)
培養計劃:
![2847713-74c79d62bb23df8d.jpg](https://i.iter01.com/images/4a9110fbcaf263cae5a94c68ad7a3d45c422644d5884192573fd196badaa4f84.jpg)
公告通知:
![2847713-e016aeaf1d975a6b.jpg](https://i.iter01.com/images/8741adda350b1741bfce218f61ad1d98cd48bdd4efc8e50512f7939c01b152d6.jpg)
bug總結
KeyError:
這是在把CSV檔案存進MySQL裡出現的錯誤。
研究了好久把col列寫對著啊,字典怎麼會出錯。
事實證明人變懶就會出錯。
模擬登入用的是同一個程式,在同一個程式的基礎上改。
開啟的CSV檔案卻沒有改過來,字典必然不會對。。。低階錯誤。
blank error:
之前的Python前輩們都會把Python縮排當成一個梗來玩。
可是當程式多了起來,這就真的很容易犯錯。
除了這個問題,在for迴圈裡也很容易出錯。
它也沒有明顯的標示,全憑感覺。
就是我覺得它應該是縮排了吧,其實還差好多。
我覺得我需要一把遊標卡尺來解決這個bug.
相關文章
- Python爬蟲之使用MongoDB儲存資料Python爬蟲MongoDB
- 爬蟲系列:使用 MySQL 儲存資料爬蟲MySql
- 爬蟲學習整理(3)資料儲存——Python對MySql操作爬蟲PythonMySql
- 【0基礎學爬蟲】爬蟲基礎之資料儲存爬蟲
- Python爬蟲學習筆記(三、儲存資料)Python爬蟲筆記
- 爬蟲資料儲存--基於MonogoDB爬蟲MonoGo
- 儲存資料到MySql資料庫——我用scrapy寫爬蟲(二)MySql資料庫爬蟲
- 【Python3網路爬蟲開發實戰】5-資料儲存-2-關係型資料庫儲存-1 MySQL儲存Python爬蟲資料庫MySql
- 併發爬蟲_使用motor儲存資料爬蟲
- Python爬蟲之資料解析(XPath)Python爬蟲
- 【0基礎學爬蟲】爬蟲基礎之檔案儲存爬蟲
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-1 TXT文字儲存Python爬蟲
- 【Python3網路爬蟲開發實戰】5-資料儲存-3-非關係型資料庫儲存-1 MongoDB儲存Python爬蟲資料庫MongoDB
- 【Python3網路爬蟲開發實戰】5-資料儲存-3-非關係型資料庫儲存-2 Redis儲存Python爬蟲資料庫Redis
- 【Python3網路爬蟲開發實戰】5-資料儲存-1 檔案儲存-2 JSON檔案儲存Python爬蟲JSON
- Python爬蟲教程-14-爬蟲使用filecookiejar儲存cookie檔案(人人網)Python爬蟲CookieJAR
- #第9篇分享:python資料儲存-MySQL資料庫PythonMySql資料庫
- python入門與進階篇(七)之原生爬蟲Python爬蟲
- Python爬蟲之BeautifulSoupPython爬蟲
- Python 爬蟲實戰之爬拼多多商品並做資料分析Python爬蟲
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- Python【爬蟲實戰】提取資料Python爬蟲
- 儲存資料之SharedPreference
- MySql的資料儲存之B+樹(淺談)MySql
- ThinkPHP之七牛雲儲存PHP
- python爬蟲 之 scrapy框架採集2000期彩票資料Python爬蟲框架
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- python爬蟲之JS逆向Python爬蟲JS
- Python爬蟲之Pyspider使用Python爬蟲IDE
- Python爬蟲之BeautifulSoup庫Python爬蟲
- python爬蟲總是爬不到資料,你需要解決反爬蟲了Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySQL儲存毫秒資料的方法MySql
- MySql資料庫——儲存過程MySql資料庫儲存過程
- Android中的資料儲存之檔案儲存Android
- k8s之資料儲存-配置儲存K8S
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲