Python爬某Ecust教务处网站

1.背景:

某ECUST高校的教务处网站现在查成绩需要验证码了。但是家长登陆的窗口还没有使用验证码,用这个漏子来爬去一下教务处的成绩:

2.工具:

Google chorme浏览器
Python 3.6.0
requests 库
PyQuery 库
lxml 库(代码中并未用到,只是因为PyQuery库调用了lxml库,姑且列入进来吧)

3.解决方法:

3.1寻找教务处家长查询的地址

直接利用chorme查看,的到地址为

    url0="http://inquiry.ecust.edu.cn/ecustedu/K_StudentQuery/K_PatriarchQueryLogin.aspx"

3.2利用chorme开发者工具查看网页要求(requests)的内容,并构造python字典。

登陆后,在chorme中按F12键进入开发者模式,选中network项,即可查看

Python爬某Ecust教务处网站_第1张图片

红框即为要构造的字典,构造字典D1

3.3寻找成绩储存网址,利用chorme找到储存成绩信息的标签

很容易找到,储存成绩的地址为:

url1="http://inquiry.ecust.edu.cn/ecustedu/K_StudentQuery/K_BigScoreTableDetail.aspx?key=1"

利用chorme开发者模式的Elements选项找到成绩储存的位置,这里有个小技巧,鼠标放在Elements的位置上的时候,对应的网页内容会有阴影,很好用!具体内容看图

Python爬某Ecust教务处网站_第2张图片

3.4编写爬虫,利用PyQuery解析网页

import requests as rq
from pyquery import PyQuery as pq
def main(username,userID):
    D1={
    '__EVENTTARGET':'',
    '__EVENTARGUMENT':'',
    '__VIEWSTATE':'/wEPDwUKMTUwODM3MTQ2Nw9kFgICAQ9kFgICCQ8PFgQeBFRleHRlHgdWaXNpYmxlaGRkZGO0jC0dS0YidkgEu6HHtZzJ4QnM',
    'TxtStudentId':username,
    'TxtSFZH':userID,
    'BtnLogin':'登录',
    '__EVENTVALIDATION':'/wEWBALtgYX0DwK/ycb4AQLU6rEHAuLjh4YMJ/uMbOy0/fn0UeHoB5DIxlisz08='
    }#这里的登陆信息及时上文的到的D1,csdn的代码块这么长的字符串可能不支持,复制的时候注意下
    url0="http://inquiry.ecust.edu.cn/ecustedu/K_StudentQuery/K_PatriarchQueryLogin.aspx"
    url1="http://inquiry.ecust.edu.cn/ecustedu/K_StudentQuery/K_BigScoreTableDetail.aspx?key=1"
    s=rq.session()#新建session会话对象,session常用来保持登陆内容
    r1=s.post(url0,data=D1)#给url0,传递D1内的内容。
    r2=s.get(url1)#返回爬url1的网页html块
    pages=r2.text#抓取爬下来的html页面
    doc=pq(pages)#新建一个pq解析对象
    k=doc('table').filter("#objDataGrid").find('tr')#找到标签为id="obj.."的table中的名为'tr'的标签的内容,k现在是许多个tr标签,需要用循环处理k
    N=[]#新建空列表
    for eachitem in k:
        N.append(pq(eachitem).text().split())#split 分隔带空格的字符串,N是一个二维List
    return N
if __name__ == "__main__":
    username=input('请输入学号:')
    userid=input('请输入身份证号:')
    N=main(username,userid)
    for i in N:#纯粹为了打印的好看一点hhh
        for j in range(0,7):
            print(i[j]+'\t',end='')
        print('')#

4.总结

1.session 保持登陆的爬虫
2.chorme开发者工具配合pq解析html网页厉害的不要不要的

你可能感兴趣的:(python爬虫)