30行代碼獲取教務(wù)網(wǎng)成績并存入Excel

“覬覦”教務(wù)網(wǎng)不是一天兩天了疆股。。

之前試過selenium倒槐,結(jié)果失敗旬痹。
昨天爬下來了,發(fā)現(xiàn)竟如此簡單!
整個過程僅花核心代碼30余行。

一击碗、步驟

1、首先查看分析

打開界面是這樣

查看源碼是這樣

什么都沒有人弓,難怪用selenium定位不到了。估計還得配合PhantomJS來渲染頁面着逐,麻煩呀崔赌。于是想到抓包,一下就抓出來了耸别。

2健芭、抓包
抓包過程就不贅述,詳情也可見我上一篇文章
http://www.reibang.com/p/1f44a9a2ddd8
最終獲得成績的真實URL地址秀姐。

3慈迈、下載數(shù)據(jù)
最先是試著不登錄,直接用requests獲取抓包得到的URL省有,結(jié)果獲得這一串



當(dāng)時嚇壞了我這個小白.痒留。
上網(wǎng)查有說什么“空指針錯誤”的谴麦,狐疑。
后面設(shè)置headers,加上cookies伸头,還開啟Session匾效,稀里糊涂通過。

805784604.png

當(dāng)時是想著抓包得到的URL可能是臨時觸發(fā)的恤磷,所以必須保持在一個會話中弧轧。
后面用network分析了下,果然如此碗殷,而且session會話只停留一定的時間。

20170327121351934.jpg
20170327121516924.jpg

由此類推速缨,先得打開成績查詢锌妻,才能觸發(fā)前面這個包,然后觸發(fā)我們要的包旬牲。
所以仿粹,還是得模擬登陸

4原茅、數(shù)據(jù)處理與保存
這里選擇存入Excel吭历。
看到一排排整齊的<td align="center">,于是用BeautifulSoup擂橘,text方法獲取文本晌区,所有的數(shù)據(jù)放入list中,簡直完美通贞。

數(shù)了下每一行有:課程號朗若、課序號、課程名昌罩、英文名哭懈、學(xué)分、屬性茎用、分?jǐn)?shù)共7項遣总。

可這是一個大的list呀,
如何將數(shù)據(jù)“規(guī)整地”存入Excel轨功?
// 嘿嘿旭斥,放點小招 //~~

data_list=[]
for data in content:
    data_list.append(data.text.strip())
    new_list=[data_list[i:i+7] for i in range(0,len(data_list),7)]

成功list中分割list,每一個list正好是7項古涧。


20174960468406.png

黑魔法的味道琉预?哈哈哈我簡直聰明_!
(當(dāng)然不會告訴你是在stackoverflow上找到的)
有了這里鋪墊,存入數(shù)據(jù)就簡單了蒿褂。

</br>

二圆米、結(jié)果

如下所示

圖1.png
圖2.png

看了一下卒暂,從入學(xué)到現(xiàn)在,一共考了73科娄帖。
一不小心暴露學(xué)渣的本質(zhì)也祠。。近速。诈嘿。。

048967407png

三削葱、代碼

還是放完整版奖亚,方便查看:

# !usr/bin/env python
#  -*-coding:utf-8 -*-
__author__='WYY'
__date__='2017.03.26'

#實戰(zhàn)小項目:爬取教務(wù)網(wǎng)成績并存入excel
import requests
import xlwt
from bs4 import BeautifulSoup

#模擬登錄
formData={'zjh':'xxxxxxxxxxxxx','mm':'xxxxxx'}
s=requests.Session()
Post=s.post(url='http://zhjw.scu.edu.cn/loginAction.do',data=formData)
print Post.status_code

#獲取基本信息
detailURL='http://zhjw.scu.edu.cn/gradeLnAllAction.do?    type=ln&oper=qbinfo&lnxndm=2016-2017%D1%A7%C4%EA%C7%EF(%C1%BD%D1%A7%C6%DA)'
html=s.get(url=detailURL)
main=html.content.decode('gbk')
soup=BeautifulSoup(main,'lxml')
content=soup.find_all('td',align="center")

#將信息放入一個list中,創(chuàng)建new_list(方便后續(xù)存入excel)
data_list=[]
for data in content:
    data_list.append(data.text.strip())
new_list=[data_list[i:i+7] for i in range(0,len(data_list),7)]

#數(shù)據(jù)存入excel表格
book=xlwt.Workbook()
sheet1=book.add_sheet('sheet1',cell_overwrite_ok=True)
heads=[u'課程號',u'課序號',u'課程名',u'英文課程名',u'學(xué)分',u'課程屬性',u'成績']
print u'\n準(zhǔn)備將數(shù)據(jù)存入表格...'
ii=0
for head in heads:
    sheet1.write(0,ii,head)
    ii+=1
i=1
for list in new_list:
    j=0
    for data in list:
        sheet1.write(i,j,data)
        j+=1
    i+=1
book.save('JiaoWuChengJi.xls')
print u'\n錄入成功!'

也可看Github:
https://github.com/LUCY78765580/Python-web-scraping/blob/master/JWCJ.py
</br>

四析砸、總結(jié)

總結(jié)這次爬蟲的關(guān)鍵:
1昔字、巧用抓包,找到成績真實URL
2首繁、模擬登錄作郭,并用Session保持會話
3、使用xlwt將數(shù)據(jù)寫入excel
4弦疮、實用小技巧:new_list=[data_list[i:i+n] for i in range(0,len(data_list),n)]

最后這一項夹攒,簡直堪稱神奇的語法糖⊙ω⊙
本篇就是這樣啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市胁塞,隨后出現(xiàn)的幾起案子咏尝,更是在濱河造成了極大的恐慌,老刑警劉巖啸罢,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件状土,死亡現(xiàn)場離奇詭異,居然都是意外死亡伺糠,警方通過查閱死者的電腦和手機蒙谓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來训桶,“玉大人累驮,你說我怎么就攤上這事《娼遥” “怎么了谤专?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長午绳。 經(jīng)常有香客問我置侍,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任蜡坊,我火速辦了婚禮杠输,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秕衙。我一直安慰自己蠢甲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布据忘。 她就那樣靜靜地躺著鹦牛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勇吊。 梳的紋絲不亂的頭發(fā)上曼追,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音汉规,去河邊找鬼礼殊。 笑死,一個胖子當(dāng)著我的面吹牛鲫忍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钥屈,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼悟民,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篷就?” 一聲冷哼從身側(cè)響起射亏,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竭业,沒想到半個月后智润,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡未辆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年窟绷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咐柜。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡兼蜈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拙友,到底是詐尸還是另有隱情为狸,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布遗契,位于F島的核電站辐棒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漾根,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一泰涂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧立叛,春花似錦负敏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赁还,卻和暖如春妖泄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艘策。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工蹈胡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朋蔫。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓罚渐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驯妄。 傳聞我的和親對象是個殘疾皇子荷并,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司青扔,掛了不少源织,但最終還是拿到小米、百度微猖、阿里谈息、京東、新浪凛剥、CVTE侠仇、樂視家的研發(fā)崗...
    時芥藍閱讀 42,239評論 11 349
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)犁珠,斷路器傅瞻,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法盲憎,內(nèi)部類的語法嗅骄,繼承相關(guān)的語法,異常的語法饼疙,線程的語...
    子非魚_t_閱讀 31,622評論 18 399
  • 這部分主要是開源Java EE框架方面的內(nèi)容溺森,包括Hibernate慕爬、MyBatis、Spring屏积、Spring ...
    雜貨鋪老板閱讀 1,367評論 0 2
  • 1. 左移(<<) 0000 0000 0000 0000 0000 0000 0000 0101然后左移2位后医窿,...
    筱南獨舞閱讀 960評論 3 10