记爬取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/>

备注

实际的过程没有上面说的这么的一鼓作气,中间还睡了一觉?

两瓶啤酒没有喝完

信息都是公开的,应该没有侵犯隐私吧?

开心就好?

相关文章
相关标签/搜索