中秋節快樂
沒有了...
轉眼間就大二了,因而就要考四級,考四級就要報名,因而去了報名網站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 學生姓名:我室友 ...... ...... ....... ..... ......
首先就是要登陸進報名網站,才能夠訪問信息頁的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’)
<br/>
如今,一切都豁然開朗了,我只須要爬取<td>標籤,將獲取的學號和姓名寫入文件就好了。網站
正則表達式 parttern = re.compile('<td width=25% >(.*?)<br><br>(.*?)<br><br>', re.S)
爬取的信息文件 <br/>ui
接下來就是用flask搭一個搜索引擎了。在文字編碼這一塊用了很長時間,由於表單的輸入數據編碼和文件的編碼是不匹配的,通過幾回實驗,我發現須要將表單輸入數據decode爲漢字編碼
name = form.name.data.decode('utf-8')
編碼真頭痛!!看一下這篇吧http://dengshuan.me/misc/xi-shuo-bian-ma... <br/>
<br/>