美文网首页
中南财大的校园一卡通头像爬虫

中南财大的校园一卡通头像爬虫

作者: 不定期抽疯 | 来源:发表于2018-06-22 23:23 被阅读0次

    想到马上就要毕业了,以后就再也登录不了校园网了,干脆就把之前爬虫的校园网登录方法写下来,不过学校的登录验证方法会修改,记得16年爬的时候还需要填写验证码的,17年干脆就取消了验证码,不过在爬取其他内容的时候需要修改cookie的内容。
    希望有缘看到这篇文章的校友,如果在学习爬虫之初想爬取校园网,提供帮助

    步骤

    • 首先当然是打开登录页面


      登录界面.png
    • 用chrome检查登录时的内容,登录是post的方法,登录的表单内容也很简单,id是账号,pwd是密码,第一个state隐藏在源代码中,很容易就能提取


      登录表单.png
    #coding=utf-8
    import requests
    import re
    import json
    import os
    
    r=requests.Session()
    url=r'http://ecard.zuel.edu.cn/Login.aspx'
    headers = { 
        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36",
        "Referer":"http://ecard.zuel.edu.cn/Login.aspx",
        "Origin":"http://ecard.zuel.edu.cn",
        "Host":"ecard.zuel.edu.cn",
                }
    def zhengze(patt,htm):
            hh=re.compile(patt)
            ll=re.findall(hh,htm)
            return ll
    
    html=r.get(url,headers=headers)
    first_con=html.content.decode('utf-8')
    pattern=r'id="__VIEWSTATE" value="(.+?)"'
    #获取了__VIEWSTATE的值
    code=zhengze(pattern,first_con)[0]
    
    data={
        '__VIEWSTATE':code,
        'loginType':'sno',
        'loginId':'**',
        'loginPwd':'**'
        }
    
    sec_con=r.post(url,headers=headers,data=data)
    
    • 登录之后就显示如下界面了,但头像并不是直接藏在源代码里,通过解析就可以获取的,还需要进一步分析。


      登录成功.jpg
    • 通过浏览chrome可以看到通过get请求得到的,其中no并不是直接可以得到的,也需要分析之前的请求。


      图片链接.png
    • no的获取链接


      no的链接.png
      json内容.png
    • 获取方式已经比较清晰了,获取no后使用get即可获得头像
    #获取名字及no
    new_url=r'http://ecard.zuel.edu.cn/Account/Operator.ashx?cmd=getuserbysno'
    thr_con=r.post(new_url,headers=headers).content.decode('utf-8')
    print(thr_con)
    row_name=json.loads(thr_con)
    name=row_name[0]['NAME']
    no=row_name[0]['NO']
    
    pic_url=r'http://ecard.zuel.edu.cn/Account/Img.aspx?cmd=img&no='+no+'&sno='+sno
    pic_con=r.get(ex_url,headers=headers).content
    open(name+'.jpg', 'wb').write(pic_con)
    
    

    展望

    照片的玩法有很多,我暂时只想到一个
    如果有的同学比如班干部之类的,有很多同学的学号及身份证号,就可以稍加修改下,下载大量同学的黑照片,然后提交到百度AI的人像识别接口,让系统识别给人像打分。

    from aip import AipFace
    import os
    """ 你的 APPID AK SK """
    APP_ID = '*****'
    API_KEY = 'AvvLEkGC8tsZne6k4SbkP9Em'
    SECRET_KEY = '3Yi07s4ttZjWgQnx1UlHeAl9LrAmggvP'
    client = AipFace(APP_ID, API_KEY, SECRET_KEY)
    
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    def get_rate(pic_path):
        options = {}
        options["max_face_num"] = 1
        options["face_fields"] = "beauty"
        image = get_file_content(pic_path)
        result=client.detect(image,options)
        result=result['result'][0]['beauty']
        return result
    file_path='*****'
    result=get_rate(file_path)
    print (result)
    

    百度给我打的分是62.161457061768。哈哈,勉强及格

    相关文章

      网友评论

          本文标题:中南财大的校园一卡通头像爬虫

          本文链接:https://www.haomeiwen.com/subject/csblyftx.html