記爬取CET4級網站的那一晚上

首先:

中秋節快樂

而後:

沒有了...

回寢室以前在304的晚上

轉眼間就大二了,因而就要考四級,考四級就要報名,因而去了報名網站http://cet.tinyin.net/accuse.asp, 上傳了照片,報了名,理論上就結束了。可是,中秋要來了,我要作點什麼。<br/>
四級報名網站爲了公平公正,將每一個報名學生的基本信息(姓名、學號、大頭照、報考等級)放在了網上,這樣同窗院、同年級的同窗就能夠進行監督。不得不說,證件照是很吸引人的部分,因而我審查了頁面元素,但願能夠發現更多a。html

<img width="120" border="0" height="160" src="photos/2014210761.jpg"></img>

photos/2014210761.jpg,有意思,看上去彷佛是某個子目錄,因而我嘗試加上了主機名git

http://cet.tinyin.net/photos/2014210761.jpg

因而我可愛的證件照出現了。。。並且,等我登陸過時後,我依然能夠訪問這個url看到圖片(如今就能夠試試)!!這意味着我能夠經過改變學號看到同窗的大頭照!?github

然而我並不知道學號

是的,我知道個人同窗的名字,可是記不住學號。可是CET4報名網站已經將姓名學號一併奉上了,我要作的就是抓取姓名和學號信息,並將這些信息寫入文件,創建關係,就像這樣:正則表達式

學生學號:2014210761 學生姓名:朱承浩
學生學號:2014210781 學生姓名:我室友
......  ......  ....... .....  ......

買了兩瓶啤酒? ,開爬! 固然還有 httpfox

模擬登陸

首先就是要登陸進報名網站,才能夠訪問信息頁的url。打開 httpfox,監聽登陸過程
監聽過程 <br/>
相關信息 <br/>
CET4網站爲了防我這種好奇心很強的人仍是作了一些處理,登陸url/login.asp其實是一個refer,真正的登陸url是http://cet.tinyin.net/reginfo.asp| 573597a1f9200a18be60068dca9ced0f7 |,我要作的,就是利用個人用戶名和密碼登入網站,獲取cookie,而後利用cookie進行後續登陸。固然,首先須要把我本身變成瀏覽器啦flask

def __init__(self):
    self.user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0"
    self.headers = {
            'User-Agent':self.user_agent,
            'Referer':'http://cet.tinyin.net/login.asp',
            'Accept-encoding':'gzip'
    }
    self.postdata = urllib.urlencode({
            'stype':'#',
            'stuno':'2014214761',
            'stupwd':'密碼就不說了'
    })

而後就是登陸獲取cookie瀏覽器

def analog_login(self):
    """
    登陸cet4網站,獲取cookie,並將
    cookie保存至文件
    """
    filename = 'cet4_cookie.txt'
    cookie = cookielib.MozillaCookieJar(filename)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

    login_url = 'http://cet.tinyin.net/reginfo.asp'
    request = urllib2.Request(login_url, self.postdata, self.headers)
    opener.open(request)
    cookie.save(ignore_discard=True, ignore_expires=True)

cookie get!!!cookie

# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file!  Do not edit.

cet.tinyin.net    FALSE    /    FALSE        ASPSESSlllllDAQBASRAC    LKNFEMDCDOLABMFPLLLLL

該正則表達式上場了!

首先實驗一下,cookie可否正常使用, 嘗試訪問 http://cet.tinyin.net/accuse.asp 頁面, cookie是沒問題,可是html倒是中文亂碼,不要緊,改爲utf-8,就行post

html = response.read().decode('gbk').encode('utf-8’)

html <br/>
如今,一切都豁然開朗了,我只須要爬取<td>標籤,將獲取的學號和姓名寫入文件就好了。網站

正則表達式 parttern = re.compile('<td width=25% >(.*?)<br><br>(.*?)<br><br>', re.S)

爬取的信息文件 <br/>ui

flask 靠你了

接下來就是用flask搭一個搜索引擎了。在文字編碼這一塊用了很長時間,由於表單的輸入數據編碼和文件的編碼是不匹配的,通過幾回實驗,我發現須要將表單輸入數據decode爲漢字編碼

name = form.name.data.decode('utf-8')

編碼真頭痛!!看一下這篇吧http://dengshuan.me/misc/xi-shuo-bian-ma... <br/>

ok了

有圖爲證 <br/>

備註

實際的過程沒有上面說的這麼的一鼓作氣,中間還睡了一覺?

兩瓶啤酒沒有喝完

信息都是公開的,應該沒有侵犯隱私吧?

開心就好?

相關文章
相關標籤/搜索