Ahacad / FDUCourseData

复旦大学本科开课数据爬虫及历年开课数据
8 stars 3 forks source link

`yarn xk` error #9

Closed Ahacad closed 3 years ago

Ahacad commented 3 years ago
ATMO13 中没有检测到正确的数据格式,请确认数据格式正确
error Command failed with exit code 1.
Ahacad commented 3 years ago

这个错误导致没有生成 xk.json 目标文件 @CLDXiang

CLDXiang commented 3 years ago

这个错误说明 https://xk.fudan.edu.cn/xk/stdElectCourse!queryLesson.action?profileId=xxx 的返回体里没有 lessonJSONswindow.lessonId2Counts 这两个对象,可以看一下 OUTPUT_PATH,即 data/raw/ATMO13 内的响应是什么。有可能是选课系统改数据格式了

Ahacad commented 3 years ago

部分返回了 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">用户名:&nbsp;</label></td>
                <td>
                    <input name="username" id="username" tabindex="1" title="请输入用户名" type="text" value="" style="width:105px;"/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="password">密 码:&nbsp;</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>
Ahacad commented 3 years ago

这个页面,应该是没有登录进去

Ahacad commented 3 years ago

XK_COOKIES, XK_PROFILE_ID, SEMESTER_ID 都已经放入

CLDXiang commented 3 years ago

可能是 XK_COOKIES 过期了?爬取过程中有通过其他设备登陆 xk 的话就会失效,再试一次看看

Ahacad commented 3 years ago

手动删除旧 cookies 重新获得 cookies 可以了