资讯专栏INFORMATION COLUMN

记爬取CET4级网站的那一夜

huayeluoliuhen / 2100人阅读

摘要:四级报名网站为了公平公正,将每个报名学生的基本信息姓名学号大头照报考等级放在了网上,这样同学院同年级的同学就可以进行监督。正则表达式爬取的信息文件靠你了接下来就是用搭一个搜索引擎了。

首先:
中秋节快乐
然后:
没有了...
回寝室之前在304的晚上

转眼间就大二了,于是就要考四级,考四级就要报名,于是去了报名网站http://cet.tinyin.net/accuse.asp, 上传了照片,报了名,理论上就结束了。但是,中秋要来了,我要做点什么。

四级报名网站为了公平公正,将每个报名学生的基本信息(姓名、学号、大头照、报考等级)放在了网上,这样同学院、同年级的同学就可以进行监督。不得不说,证件照是很吸引人的部分,于是我审查了页面元素,希望可以发现更多a。




CET4网站为了防我这种好奇心很强的人还是做了一些处理,登录url/login.asp实际上是一个refer,真正的登录url是http://cet.tinyin.net/reginfo.asp|573597a1f9200a18be60068dca9ced0f7|,我要做的,就是利用我的用户名和密码登入网站,获取cookie,然后利用cookie进行后续登录。当然,首先需要把我自己变成浏览器啦

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!!!

# 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,就行

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



现在,一切都豁然开朗了,我只需要爬取标签,将获取的学号和姓名写入文件就行了。

正则表达式 parttern = re.compile("(.*?)

(.*?)

", re.S)

爬取的信息文件

flask 靠你了

接下来就是用flask搭一个搜索引擎了。在文字编码这一块用了很长时间,因为表单的输入数据编码和文件的编码是不匹配的,经过几次实验,我发现需要将表单输入数据decode为汉字编码

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

编码真头痛!!看一下这篇吧http://dengshuan.me/misc/xi-shuo-bian-ma...

ok了


备注 实际的过程没有上面说的这么的一气呵成,中间还睡了一觉? 两瓶啤酒没有喝完 信息都是公开的,应该没有侵犯隐私吧? 开心就好?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37869.html

相关文章

  • Python爬虫神器pyppeteer,对 js 加密降维打击

    摘要:爬虫神器,对加密降维打击是对无头浏览器的封装。使用等其他无头浏览器的最大优势当然是对加密实行降维打击,完全无视加密手段,对于一些需要登录的应用,也可以模拟点击然后保存。请求过滤你的那一段页面自动下拉脚本 爬虫神器pyppeteer,对 js 加密降维打击 pyppeteer 是对无头浏览器 puppeteer的 Python 封装。无头浏览器广泛用于自动化测试,同时也是一种很好地爬虫思...

    Karuru 评论0 收藏0
  • Python 词云分析周杰伦《晴天》

    摘要:词云可以通过网站纽扣词云来制作,然而可以通过代码来实现,下面开始吧。 词云可以通过网站 https://wordart.com/ 纽扣词云http://cloud.niucodata.com/ 来制作,然而 Python 可以通过代码来实现,下面开始吧。 showImg(https://segmentfault.com/img/bVQzIx?w=874&h=416); pip inst...

    DoINsiSt 评论0 收藏0
  • 爬虫初操作(一)

    摘要:一个对应相应的状态码,状态码表示协议所返回的响应的状态。下面将状态码归结如下继续客户端应当继续发送请求。继续处理由扩展的状态码,代表处理将被继续执行。处理方式丢弃该状态码不被的应用程序直接使用,只是作为类型回应的默认解释。 本篇内容为 python 网络爬虫初级操作,内容主要有以下 3 部分: python 关于爬虫的一些基本操作和知识 静态网页抓取 动态网页抓取 基本操作和知识...

    Ocean 评论0 收藏0
  • SQL系列之基本操作

    摘要:新建表列名数据类型表级完整性约束条件列名数据类型表级完整性约束条件实例其中是表名,都是列名,后面的都是数据类型这里的是将定义为主键是将定义为唯一的也就是后面插入数据的时候不能有重复的名字拓展主键的定义是在多个候选码中找出那个能够唯一识别一组 新建表 **`CREATE TABLE [[表级完整性约束条件]],[[表级完整性约束条件]]......`** 实例 CREATE TAB...

    Scliang 评论0 收藏0
  • SQL系列之基本操作

    摘要:新建表列名数据类型表级完整性约束条件列名数据类型表级完整性约束条件实例其中是表名,都是列名,后面的都是数据类型这里的是将定义为主键是将定义为唯一的也就是后面插入数据的时候不能有重复的名字拓展主键的定义是在多个候选码中找出那个能够唯一识别一组 新建表 **`CREATE TABLE [[表级完整性约束条件]],[[表级完整性约束条件]]......`** 实例 CREATE TAB...

    oogh 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<