python爬取学校教务管理系统_python requests模拟登陆正方教务管理系统,并爬取成绩...
最近模擬帶賬號登陸,查看了一些他人的博客,發現正方教務已經更新了,所以只能自己探索了。
登陸:
通過抓包,發現需要提交的值
需要值lt,這是個啥,其實他在訪問登陸頁面時就產生了
session=requests.Session()
response= session.get(login_url, headers=header)
cookies=response.cookiesfor c incookies:
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)打印的值是:
瀏覽器訪問抓包看下
啊嘞嘞,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
原文:https://www.cnblogs.com/xr210/p/10335795.html
總結
以上是生活随笔為你收集整理的python爬取学校教务管理系统_python requests模拟登陆正方教务管理系统,并爬取成绩...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac终端彻底卸载Office
- 下一篇: 教你用c++代码制作:仙剑奇侠传,火爆人