date: 2017-01-21 15:25:04
爬了這么久的教務處哲泊,終于還是繞過了千山萬水登進來了柄错。
這段時間準備期末考舷夺,忙,好久不更博售貌。
年終總結(jié)也沒有寫给猾。
是時候開更啦!
XDJiao_Wu_Chu.py說明文檔
1趁矾、init():兩個URL分別為用抓包軟件獲取的實際登錄網(wǎng)址和實際提交賬號密碼的網(wǎng)址耙册。
2给僵、login():用抓包軟件獲取的用Chrome瀏覽器登錄教務處的head報文毫捣,login()為模擬登錄教務處的所需信息。
3帝际、Print():將登錄進去的課程表HTML網(wǎng)頁打印出來蔓同。
4、使用前請確認安裝BeautifulSoup模塊蹲诀。請修改里面的學號id和password再進行運行斑粱。
5、后續(xù)將從HTML網(wǎng)頁中提取出有用的信息脯爪。
6则北、運行l(wèi)ogin()后便可以登錄進教務處系統(tǒng),修改Print()中的URL即可完成不同信息的獲取痕慢,比如換成成績網(wǎng)頁的URL尚揣、教務通知的URL等等。
<pre>
Python35 爬蟲 西電 研究生教務處 課表
肖灑 2017/1/19 V1.0
請?zhí)鎿Qid和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()
</pre>