码迷,mamicode.com
首页 > 编程语言 > 详细

python requests模拟登陆正方教务管理系统,并爬取成绩

时间:2019-01-29 21:17:49      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:val   ade   post请求   代码   模拟登陆   tps   net   url   for   

最近模拟带账号登陆,查看了一些他人的博客,发现正方教务已经更新了,所以只能自己探索了。

登陆:

  通过抓包,发现需要提交的值

       技术分享图片

需要值lt,这是个啥,其实他在访问登陆页面时就产生了

       技术分享图片

session=requests.Session()
response = session.get(login_url, headers=header)
cookies = response.cookies
for c in cookies:
    cookie = c.name + = + c.value
print(cookie-get: + cookie)
selector = etree.HTML(response.text)
token = selector.xpath(//input[@name="lt"]/@value)[0]  # 解析出登陆所需的lt信息
print(token)

得到lt的值,加入到自己创建的表单中

根据上面抓包工具中需要的值,创建所需表单

login_data={
useValidateCode: 0,
            isremenberme: 1,
            ip:‘‘,
            username: username,
            password: password,
            losetime: 30,
            lt: token,
            _eventId: submit,
            submit1:‘‘
}

post请求登陆:

response = session.post(login_url, data=login_data, headers=header)

print(response.status_code)

我们成功了,哈哈哈,很开心!

技术分享图片

进入了主页面:

技术分享图片

 

 这是我们登进的页面,要爬取成绩,成绩在教务系统中,细心观察

get下链接:http://******/xs_main.aspx?xh=***&type=1

response = session.get(main_url, headers=header)
print(response.cookies)
print(response.status_code)
print(BeautifulSoup(response.text, lxml))

response.status_code返回200,以为成功了?打印一下

技术分享图片

额!难受,鬼刀一开,看不见........他竟然返回的是登陆界面?

究竟是什么问题呢,我怀疑是cookie:

因为

print(response.cookies)打印的值是:

<RequestsCookieJar[]>
浏览器访问抓包看下
技术分享图片
啊嘞嘞,why?
查看其他请求,在Cookie中竟然都没有创建过ASP.NET_SessionID
那怎么办呢?
那我自己写一个吧:
requests.utils.add_dict_to_cookiejar(session.cookies,{"ASP.NET_SessionId":"0ftp4drb5uar0r55urffkobr"})

哎呀,成功了。开心,不过似乎ASP.NET_SessionId有时效性。

不管了,也不知道为啥Session.Cookies得不到所需要的Cookie,先不管了,各位大佬,发现问题的话,或者有啥好的解决办法麻烦告诉下!拜谢

代码地址:https://github.com/JackyWjx/HNCU

 

 

python requests模拟登陆正方教务管理系统,并爬取成绩

标签:val   ade   post请求   代码   模拟登陆   tps   net   url   for   

原文地址:https://www.cnblogs.com/xr210/p/10335795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!