Closed Ahacad closed 3 years ago
这个错误导致没有生成 xk.json
目标文件 @CLDXiang
这个错误说明 https://xk.fudan.edu.cn/xk/stdElectCourse!queryLesson.action?profileId=xxx
的返回体里没有 lessonJSONs
和 window.lessonId2Counts
这两个对象,可以看一下 OUTPUT_PATH
,即 data/raw/ATMO13
内的响应是什么。有可能是选课系统改数据格式了
部分返回了 html:
<head>
<title>复旦大学选课系统</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="content-style-type" content="text/css"/>
<meta http-equiv="content-script-type" content="text/javascript"/>
</head>
<link rel="stylesheet" href="/xk/static/css/login.css" />
<div class="browser-hint">
<h2>请使用IE8(或以上版本)、Firefox或Google Chrome浏览器访问本系统<br>否则可能影响功能使用</h2>
<ul>
<li>
<a class="iexplorer" href="http://www.microsoft.com/windows/internet-explorer" target="_blank"></a>
</li>
<li>
<a class="firefox" href="http://www.mozilla.com" target="_blank"></a>
</li>
<li>
<a class="chrome" href="http://www.google.com/chrome" target="_blank"></a>
</li>
</ul>
</div>
<div class="logindiv">
<div class="banner1"></div>
<div class="banner2"></div>
<form id="loginForm" name="loginForm" action="/xk/login.action" method="post" target="_top" >
<table class="bulletin">
<tr>
<td>
<div id="s4">
<div><img style="width:430px;height:230px;" src="/xk/static/themes/default/images/login/gallery1.png"/></div>
<div><img style="width:430px;height:230px;" src="/xk/static/themes/default/images/login/gallery2.png"/></div>
</div>
</td>
</tr>
</table>
<table class="logintable">
<tr>
<td colspan="2" style="text-align:center;color:red;"></td>
</tr>
<tr>
<td><label for="username">用户名: </label></td>
<td>
<input name="username" id="username" tabindex="1" title="请输入用户名" type="text" value="" style="width:105px;"/>
</td>
</tr>
<tr>
<td>
<label for="password">密 码: </label>
</td>
<td>
<input id="password" name="password" tabindex="2" type="password" style="width:105px;"/>
<input name="encodedPassword" type="hidden" value=""/>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td colspan="2">
<input name="session_locale" id="local_zh" type="radio" tabindex="4" value="zh_CN" checked="checked"/><label for="local_zh">中文</label>
| <label for="local_en"><a href="http://xk.fudan.edu.cn/en_xk/login.action" target="_blank" style="font-size: 13px;font-family: Verdana, Arial, sans-serif;text-decoration:none;">English version</a></label>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="" onclick="bg.form.submit('loginForm',null,null,checkLogin);return false;" tabindex="6" name="submitBtn" class="blue-button"/>
</td>
</tr>
</table>
<table class="footage" style="bottom: 0px;right: 60px;margin-top: 182px;font-size: 14px;">
<tr>
<td style="text-align:right">注意:仅支持一个设备登录,如果从一个设备切换的到另外一个设备,上一个设备将会被踢出登录
</td>
</tr>
</table>
</form>
</div>
<div class="foot"></div>
<script type="text/javascript" src="/xk/static/scripts/beangleMin.js"></script>
<script type="text/javascript" src="/xk/static/scripts/jquery.cycle.all.js"></script>
<script type="text/javascript" src="/xk/static/scripts/css_browser_selector.js?x1"></script>
<script type="text/javascript" src="/xk/static/scripts/sha1.js"></script>
<script type="text/javascript">
$(function() {
$('#s4').cycle({
fx: 'fade',
speed: 'slow',
timeout: 2000
});
});
</script>
<script type="text/javascript">
var form = document.loginForm;
function casLogin(){
var loginStr = window.location.href;
loginStr = loginStr.substring(0,loginStr.lastIndexOf("/"));
loginStr += "/home.action";
loginStr = "https://uis1.fudan.edu.cn/amserver/UI/Login?gx_charset=UTF-8&goto=" + loginStr;
window.location = loginStr;
}
function checkLogin(form){
if(!form['username'].value){
alert("用户名称不能为空");return false;
}
if(!form['password'].value){
alert("密码不能为空");return false;
}
//form['password'].value = CryptoJS.SHA1('90359e29-4987-4cb3-a4c6-a646fc165b25-' + form['password'].value);
return true;
}
if("zh".indexOf("en")!=-1){document.getElementById('local_en').checked=true;}
var username=beangle.cookie.get("username");
if(null!=username){ form['username'].value=username;}
(function(){
// 侦测登陆页面是否被嵌套了
if(jQuery("body > div:not(.logindiv,.foot,.browser-hint)").length) {
window.location = "/xk/login.action?v=1";
}
})();
</script>
这个页面,应该是没有登录进去
XK_COOKIES
, XK_PROFILE_ID
, SEMESTER_ID
都已经放入
可能是 XK_COOKIES
过期了?爬取过程中有通过其他设备登陆 xk 的话就会失效,再试一次看看
手动删除旧 cookies 重新获得 cookies 可以了