Ejemplo n.º 1
0
 def get_index_ec(self):
     url = get_url("selective_course")
     html = self._get_html(url)
     not_error_page(html)
     courses = parse_standard_table(html, "kcmcgrid", pure=True)
     url_code = re.findall(r'xkkh=(.*?)&', html)
     return url_code, courses
Ejemplo n.º 2
0
 def select_PE_class(self, code1, code2):
     url = get_url("pe_class")
     html, url = self._get_html(url, only_html=False)
     viewstate = get_viewstate(html)
     data = {
         "__EVENTTARGET": "ListBox1",
         "__EVENTARGUMENT": "",
         "__VIEWSTATE": viewstate,
         "DropDownList1": "项目".encode("gb2312"),
         "ListBox1": code1
     }
     html = safe_post(url,
                      data=data,
                      headers=self._headers,
                      cookies=self._cookies).text
     _t = {
         "__VIEWSTATE": get_viewstate(html),
         "ListBox2": code2,
         "RadioButtonList1": "0",
         "button3": "选定课程"
     }
     data.update(_t)
     html = safe_post(url,
                      data=data,
                      headers=self._headers,
                      cookies=self._cookies).text
     result = safe_re(r"alert\('(.*)'\)", html)
     return result
Ejemplo n.º 3
0
 def get_course_category(self):
     special = "xnxq=%s&xh=%s"
     _t = ("2016-20171", self._info["xh"])
     url = get_url("course_category", special)
     html = self._get_html(url, _t)
     not_error_page(html, self.uid)
     selects = self.selects_to_list(html, "ListBox1")
     return selects
Ejemplo n.º 4
0
    def evaluate_teacher(self, mark):
        course_list = self.get_evaluate_course()
        url = get_url("base")

        for index in range(len(course_list)):
            html = self._get_html(url + course_list[index], complete_url=True)
            viewstate = get_viewstate(html)
            page = etree.HTML(html)

            alert = page.xpath('//*[@id="Form1"]/script[2]')
            if alert:
                not_error_page(alert[0].text)

            current_course = page.xpath(
                '//*[@id="pjkc"]/option[@selected="selected"]/@value')
            print("\nStart evaluating %s ..." % current_course[0])

            hidden_input = page.xpath('//*[@id="DataGrid1"]//input/@name')
            selects = page.xpath('//*[@id="DataGrid1"]//select/@name')

            data = {
                "__EVENTTARGET": "",
                "__EVENTARGUMENT": "",
                "__VIEWSTATE": viewstate,
                "pjkc": current_course[0],
                "pjxx": "",
                "txt1": "",
                "TextBox1": "0",
                "Button1": "保  存"
            }

            for i in range(len(hidden_input)):
                _data = {
                    hidden_input[i]: "",
                    selects[i]: mark.encode("gb2312")
                }
                data.update(_data)

            if index == len(course_list) - 1:
                data.pop("Button1")
                data["Button2"] = " 提  交 "

            html = safe_post(url + course_list[index],
                             data=data,
                             headers=self._headers,
                             cookies=self._cookies).text
            page = etree.HTML(html)
            alert = page.xpath('//*[@id="Form1"]/script[2]')
            if alert:
                raise PageError(alert.text)

            if index < len(course_list) - 1:
                print("Finish and sleep for 2s")
                time.sleep(2)
            elif index == len(course_list) - 1:
                print("Finish")
                return "\nEvaluation finish"
Ejemplo n.º 5
0
    def get_course_detail(self, url_code):
        special = "xkkh=%s&xh=%s"
        _t = (url_code, self._info["xh"])

        url = get_url("course_detail", special)
        html = self._get_html(url, _t)
        not_error_page(html, self.uid)
        classroom_selection = re.findall(r'value="(.*?)".*?xkkh', html)
        result = parse_standard_table(html, "xjs_table", pure=True)
        return result, classroom_selection
Ejemplo n.º 6
0
 def get_PEC_category(self, category=None):
     url = get_url("pe_class")
     html, url = self._get_html(url, only_html=False)
     if category:
         viewstate = get_viewstate(html)
         data = {
             "__EVENTTARGET": "ListBox1",
             "__EVENTARGUMENT": "",
             "__VIEWSTATE": viewstate,
             "DropDownList1": "项目".encode("gb2312"),
             "ListBox1": category
         }
         html = safe_post(url,
                          data=data,
                          headers=self._headers,
                          cookies=self._cookies).text
         select_name = "ListBox2"
     else:
         select_name = "ListBox1"
     selects = self.selects_to_list(html, select_name)
     return selects
Ejemplo n.º 7
0
    def select_elective_course(self, url_code, selected_classroom):
        special = "xkkh=%s&xh=%s"
        _t = (url_code, self._info["xh"])

        url = get_url("course_detail", special)
        html, url = self._get_html(url, _t, only_html=False)
        viewstate = get_viewstate(html)

        data = {
            "__EVENTTARGET": "Button1",
            "__EVENTARGUMENT": "",
            "__VIEWSTATE": viewstate,
            "xkkh": selected_classroom,
            "RadioButtonList1": 0,
        }

        html = safe_post(url,
                         data=data,
                         headers=self._headers,
                         cookies=self._cookies).text
        result = safe_re(r"alert\('(.*)'\)", html)
        return result
Ejemplo n.º 8
0
    def get_elective_course(self, category):
        while True:
            url = get_url("selective_course")
            html, url = self._get_html(url, only_html=False)
            if "三秒防刷" in html:
                print("\n检测到三秒防刷,程序将睡眠三秒钟。")
                time.sleep(3)
            else:
                break
        viewstate = get_viewstate(html)

        post_data = {
            "__EVENTTARGET": "",
            "__EVENTARGUMENT": "",
            "__VIEWSTATE": viewstate,
            "zymc": "",
            "xx": "",
            "Button2": "选修课程"
        }

        html = safe_post(url=url,
                         data=post_data,
                         headers=self._headers,
                         cookies=self._cookies).text

        post_data["zymc"] = (category + "|院公选课5").encode("gb2312")
        del post_data["Button2"]

        num = 0
        current_page = 1
        courses = []
        url_code = []
        page_num = []

        while True:
            try:
                post_data["__VIEWSTATE"] = get_viewstate(html)

                html = safe_post(url=url,
                                 data=post_data,
                                 headers=self._headers,
                                 cookies=self._cookies).text
                _t = parse_standard_table(html, "kcmcgrid", pure=True)
                courses.extend(_t)
                _t = re.findall(r'xkkh=(.*?)&', html)
                url_code.extend(_t)

                if num == 0:
                    num = int(re.search(r'共(\d*)条记录!', html).group(1))

                if (current_page % 10) == 1:
                    page_num = re.findall(r'kcmcgrid\$_ctl\d*\$_ctl\d*', html)
                    if (current_page // 10) == 1:
                        _n = 10 - (num // 10 - 9)
                        page_num = [
                            page_num[i] for i in range(len(page_num)) if i > _n
                        ]

                if len(page_num) == 0:
                    break

                current_page += 1
                post_data["__EVENTTARGET"] = page_num.pop(0).replace("$", ":")
            except AttributeError:
                print("\n检测到三秒防刷,程序将睡眠三秒钟。")
                time.sleep(3)
        return url_code, courses
Ejemplo n.º 9
0
 def get_evaluate_course(self):
     url = get_url("evaluate_list", special="xh=%s")
     html = self._get_html(url, special_parameter=self._info["xh"])
     page = etree.HTML(html)
     course_list = page.xpath('//*[@id="headDiv"]/ul/li[4]/ul/li/a/@href')
     return course_list