Python爬蟲登錄查詢并抓取學(xué)生成績

繼上次爬取完廣西科技大學(xué)的各個(gè)班級(jí)課表http://www.reibang.com/p/d3e493d127db 接著來試著用Python爬蟲登錄查詢并抓取學(xué)生的成績(當(dāng)然爬取信息霉翔,需要學(xué)號(hào)和密碼崩掘,這里只能用的自己的向大家說明)

上次,抓取學(xué)校班級(jí)的課表是一種簡單的爬取,因?yàn)橹苯臃治鼍W(wǎng)頁弧哎,獲得自己所需要的數(shù)據(jù)即可。

這次是用Python爬蟲登錄查詢并抓取學(xué)生的成績描验,中間多了一步就是要模擬瀏覽器進(jìn)行登錄华烟。關(guān)于這點(diǎn)我走錯(cuò)了路,困擾我一天多酿矢,那會(huì)兒實(shí)在想不清楚為什么始終提取不出頁面榨乎,結(jié)果看了學(xué)長昨晚剛寫完的文章(https://pingxonline.com/php ),終于知道為什么了瘫筐,因?yàn)橥饩W(wǎng)無法訪問教務(wù)信息管理系統(tǒng)蜜暑,外網(wǎng)能查詢成績的只有柳苑晨曦網(wǎng)站,所以本文就以柳苑晨曦成績查詢?yōu)榕老x的對(duì)象策肝。頓時(shí)肛捍,想哭,白白浪費(fèi)時(shí)間還心力交瘁之众。不廢話了拙毫,直接進(jìn)入正題:
(一)不要亂碰壁——明白第一點(diǎn)

  1. 既然Python爬蟲登錄查詢,肯定是要知道查詢成績要登錄的頁面(柳苑晨曦):http://online.gxut.edu.cn/cmzx/StudentsMediaCentre.php/Index/login/chengji/1.html
    2.利用Chrome進(jìn)行抓包自動(dòng)監(jiān)聽當(dāng)前網(wǎng)絡(luò)棺禾,打開頁面缀蹄,按下F12,如圖所示

    3.此時(shí)有這些文件出現(xiàn)膘婶,很明顯chengji文件是我們想要的文件缺前,點(diǎn)擊打開

    4.查找我們剛剛輸入的data,一直向下拉就可以看到了

    同時(shí)悬襟,我們可以看到Request Header里面的內(nèi)容衅码,Cookie、Referer古胆、User-Agent

    在這里我一定要說一下Cookie肆良,剛開始我在網(wǎng)上搜索資料的時(shí)候,有的利用兩次請(qǐng)求頁面而獲得逸绎,然后我查找了一下它的作用:
    什么是Cookies?
    通俗點(diǎn)講:Cookies是一種能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)儲(chǔ)存到客戶端的硬盤或內(nèi)存夭谤,或是從客戶端的硬盤讀取數(shù)據(jù)的一種技術(shù)棺牧。Cookies是當(dāng)你瀏覽某網(wǎng)站時(shí),由Web服務(wù)器置于你硬盤上的一個(gè)非常小的文本文件朗儒,它可以記錄你的用戶ID颊乘、密碼参淹、瀏覽過的網(wǎng)頁、停留的時(shí)間等信息乏悄。
    經(jīng)過我多次打開此頁面浙值,觀察而得,這個(gè)Cookie是不變的檩小。
    (二)模擬登陸

    (三)解析頁面开呐,仍然利用BeautifulSoup

    查看HTML文檔,可以知道成績是存放在<tbody id="biaoge">的<td>標(biāo)簽里规求,利用創(chuàng)建的soup對(duì)象搜索節(jié)點(diǎn)

    (四)完整代碼
    把獲得的數(shù)據(jù)傳入數(shù)據(jù)庫進(jìn)行保存
# -*-coding=utf-8-*-
import re
import urllib
import urllib2
import cookielib
from bs4 import BeautifulSoup
import pymysql.cursors
# 連接數(shù)據(jù)庫
connection = pymysql.connect(
    host='localhost',
    user='root',
    password='',
    db='chenji',
    charset='utf8',
    cursorclass=pymysql.cursors.DictCursor,
)
# 模擬登陸
loginUrl = 'http://online.gxut.edu.cn/cmzx/StudentsMediaCentre.php/Index/login/chengji/1.html'
# cookie
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
values = {
    'userName': '201500402079',
    'password': 'xxxxxx',
    'submit': '登入'
}
postdata = urllib.urlencode(values)
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36',
    'Referer': 'http://online.gxut.edu.cn/cmzx/StudentsMediaCentre.php/Index/login/chengji/1.html',
    'Cookie': 'PHPSESSID=0pa9gpq62pi6hvcf8018b77hg0'
}
request = urllib2.Request(loginUrl, postdata, header)
print (postdata)
response = urllib2.urlopen(request)
print response.getcode()
html_cont = response.read()
print html_cont
soup = BeautifulSoup(html_cont, 'html.parser', from_encoding='utf-8')
arr = soup.find(id="biaoge").find_all("td")
cj = []
for x in arr:
    ch = x.get_text()
    print ch
    strings = ch
    cj.append(strings)
    if len(cj) == 14:
        try:
            with connection.cursor() as cursor:
                sql = "INSERT INTO cj(xh, student, semester, classname, leixing, xuefen, pingshi, mid, qimo, total, xz, point, classcode, shic)VALUES (%s, %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
                cursor.execute(sql, (cj[0], cj[1], cj[2], cj[3], cj[4], cj[5], cj[6], cj[7], cj[8], cj[9], cj[10], cj[11], cj[12], cj[13]))
                connection.commit()
        finally:
            cj = []
            print "insert succeed!"
            pass

(五)個(gè)人感悟
1.因?yàn)槭莿傞_始學(xué)習(xí)爬蟲知識(shí)筐付,各種不懂,到處碰壁阻肿,可能一個(gè)小小的瓦戚、很簡單的點(diǎn)兒,在我的手里都要琢磨很久——對(duì)知識(shí)不了解丛塌,反復(fù)反復(fù)较解,一次又一次的error,一個(gè)一個(gè)地去百度,甚至一天下來赴邻,什么也解決印衔,內(nèi)心里都要快氣炸了,有一種對(duì)自己“恨鐵不成鋼”的感覺乍楚,但是還是一次次選擇去解決当编。
2.從學(xué)習(xí)這個(gè)裝了很多軟件,很多版本徒溪,或許Python的2.x和Python的3.x的不同嗎忿偷,讓我在安裝第三方插件的時(shí)候熬丧,就匹配的這個(gè)問題上吃了一些苦頭太伊。讓我想起那天,畢業(yè)的學(xué)長在實(shí)驗(yàn)室的一句話“先有廣度拢操,才有深度”渠概。趁著自己年輕茶凳,多去接觸不同的東西,無論是生活方面的播揪,還是專業(yè)知識(shí)的贮喧,對(duì)自己都有很大的幫助!

                                                                        2017.7.22     六
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猪狈,一起剝皮案震驚了整個(gè)濱河市箱沦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雇庙,老刑警劉巖谓形,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灶伊,死亡現(xiàn)場離奇詭異,居然都是意外死亡寒跳,警方通過查閱死者的電腦和手機(jī)聘萨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來童太,“玉大人米辐,你說我怎么就攤上這事】捣撸” “怎么了儡循?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長征冷。 經(jīng)常有香客問我择膝,道長,這世上最難降的妖魔是什么检激? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任肴捉,我火速辦了婚禮,結(jié)果婚禮上叔收,老公的妹妹穿的比我還像新娘齿穗。我一直安慰自己,他們只是感情好饺律,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布窃页。 她就那樣靜靜地躺著,像睡著了一般复濒。 火紅的嫁衣襯著肌膚如雪脖卖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天巧颈,我揣著相機(jī)與錄音畦木,去河邊找鬼。 笑死砸泛,一個(gè)胖子當(dāng)著我的面吹牛十籍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唇礁,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勾栗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盏筐?” 一聲冷哼從身側(cè)響起械姻,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎机断,沒想到半個(gè)月后楷拳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吏奸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年欢揖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奋蔚。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡她混,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泊碑,到底是詐尸還是另有隱情坤按,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布馒过,位于F島的核電站臭脓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腹忽。R本人自食惡果不足惜来累,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窘奏。 院中可真熱鬧嘹锁,春花似錦、人聲如沸着裹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骇扇。三九已至摔竿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匠题,已是汗流浹背拯坟。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留韭山,地道東北人郁季。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像钱磅,于是被迫代替她去往敵國和親梦裂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • Python爬蟲入門(urllib+Beautifulsoup) 本文包括:1盖淡、爬蟲簡單介紹2年柠、爬蟲架構(gòu)三大模塊3...
    廖少少閱讀 9,835評(píng)論 0 6
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識(shí)體系必須貫穿數(shù)據(jù)獲取褪迟、數(shù)據(jù)存儲(chǔ)冗恨、數(shù)據(jù)提取答憔、數(shù)據(jù)分析、數(shù)據(jù)挖掘掀抹、...
    whenif閱讀 18,073評(píng)論 45 523
  • Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個(gè)大的版塊:抓取虐拓,分析,存儲(chǔ) 另外傲武,比較常用的爬蟲框架Scrapy蓉驹,這里最后也詳細(xì)...
    楚江數(shù)據(jù)閱讀 1,469評(píng)論 0 6
  • urllib2是Python的一個(gè)獲取URLs的組件。他以u(píng)rlopen函數(shù)的形式提供了一個(gè)非常簡單的接口揪利,具有利...
    查無此人asdasd閱讀 1,501評(píng)論 0 3
  • 美國自2008年金融危機(jī)以來共加息三次态兴,2016年底以來90天內(nèi)兩次加息,說明美國經(jīng)濟(jì)強(qiáng)勢歸來疟位,對(duì)世界經(jīng)濟(jì)將是重大沖擊瞻润。
    Stan森閱讀 195評(píng)論 0 0