模拟登陆

date: 2017-01-21 15:25:04

爬了这么久的教务处,终于还是绕过了千山万水登进来了。
这段时间准备期末考,忙,好久不更博。
年终总结也没有写。
是时候开更啦!

XDJiao_Wu_Chu.py说明文档

1、init():两个URL分别为用抓包软件获取的实际登录网址和实际提交账号密码的网址。
2、login():用抓包软件获取的用Chrome浏览器登录教务处的head报文,login()为模拟登录教务处的所需信息。
3、Print():将登录进去的课程表HTML网页打印出来。
4、使用前请确认安装BeautifulSoup模块。请修改里面的学号id和password再进行运行。
5、后续将从HTML网页中提取出有用的信息。
6、运行login()后便可以登录进教务处系统,修改Print()中的URL即可完成不同信息的获取,比如换成成绩网页的URL、教务通知的URL等等。

Python35 爬虫 西电 研究生教务处 课表

肖洒 2017/1/19 V1.0

请替换id和password再进行使用

--encoding:utf-8--

coding=utf-8

author = 'ysc'
import requests
import csv
from bs4 import BeautifulSoup

class ScrapeXd:

def __init__(self, auth_url=None, log_url=None):
    if not auth_url:
        self.auth_url = "http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp"
        self.log_url = "http://jwxt.xidian.edu.cn/caslogin.jsp"
    else:
        self.auth_url = auth_url
        self.log_url = log_url
    self.session = requests.Session()

def login(self, id='XXXXXXXXXX', password='XXXXXX'):
    r = self.session.get(self.auth_url)
    data = r.text
    bsObj = BeautifulSoup(data, "html.parser")
    lt_value = bsObj.find(attrs={"name": "lt"})['value']
    exe_value = bsObj.find(attrs={"name": "execution"})['value']
    params = {'username': id, 'password': password,
              "submit": "", "lt": lt_value, "execution": exe_value,
              "_eventId": "submit", "rmShown": '1'}
    headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
       'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
       "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
       "Accept-Encoding": "gzip, deflate",
       "Referer": "http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp",
       "Content-Type": "application/x-www-form-urlencoded"}
    s = self.session.post(self.auth_url, data=params, headers=headers)
    s = self.session.get(self.log_url)

def Print(self):
    grade_page = self.session.get("http://yjsxt.xidian.edu.cn/eduadmin/findCaresultByStudentAction.do")
    bsObj2 = BeautifulSoup(grade_page.text, "html.parser")
    print(bsObj2)

if name == 'main':
# 初始化爬虫对象
sx = ScrapeXd()
# 登录(在此处传入正确的个人学号与密码信息)
sx.login(id='XXXXXXXXXX', password='XXXXXX')
sx.Print()

你可能感兴趣的:(模拟登陆)