超星工具2310版-python 分析第三期

效果图和联系方式,请“转至末尾”

接下来我们继续看今天的代码分析: 

正文内容:

选取有任务点的课程并处理

def deal_course_select(url_class):
    new_url_dict = url_302(url_class)
    new_url = new_url_dict["new_url"]
    course_HTML = course_get(new_url)
    # 为防止账号没有课程或没有班级,需要后期在xpath获取加入try,以防报错
    chapter_mission = []
    try:
        course_unit_list = course_HTML.xpath("//div[@class='units']")
        for course_unit in course_unit_list:
            print(__list_get(course_unit.xpath("./h2/a/@title")))
            recursive_course(course_unit.xpath("./div"), chapter_mission, 1)
    except Exception as e:
        print("deal_course_select error %s" % e)
    print("读取完成,共有%d个章节可一键完成" % len(chapter_mission))
    deal_misson(chapter_mission, new_url_dict["cpi"], 0)

注释:

这段代码定义了一个名为`deal_course_select`的函数,该函数接受一个参数`url_class`。

函数的作用是处理课程选择页面,并提取出所有章节信息,以便后续处理和访问。具体来说,函数的实现过程如下:

  1. 调用`url_302`函数,传入`url_class`参数,获取重定向后的URL地址,并将其存储在`new_url_dict`字典中。

  2. 从`new_url_dict`字典中获取重定向后的URL地址,并将其存储在`new_url`变量中。

  3. 调用`course_get`函数,传入`new_url`参数,获取课程页面的HTML内容,并将其存储在`course_HTML`变量中。

  4. 初始化一个空列表`chapter_mission`,用于存储所有章节的信息。

  5. 使用try-except语句块来捕获可能出现的异常。在try语句块中,首先使用XPath表达式从`course_HTML`中提取出所有的课程单元(`div`元素),并将其存储在`course_unit_list`变量中。然后遍历`course_unit_list`中的每个课程单元,使用XPath表达式从中提取出章节标题,并将其打印出来。接着调用`recursive_course`函数,传入当前课程单元的子元素、`chapter_mission`列表和数字1作为参数,以递归地处理子元素,并将结果添加到`chapter_mission`列表中。

  6. 在except语句块中,打印出错误信息。

  7. 最后,打印出所有章节的数量,并调用`deal_misson`函数,传入`chapter_mission`列表、`new_url_dict`字典中的`cpi`键对应的值和数字0作为参数,以处理所有章节的任务。

递归读取所有课程信息,返回dict

def recursive_course_dict(course_unit_list, chapter_dict):
    for course_unit in course_unit_list:
        h3_list = course_unit.xpath("./h3")
        for h3_item in h3_list:
            chapter_dict.update({__list_get(h3_item.xpath("./a/span[@class='chapterNumber']/text()")) + __list_get(h3_item.xpath("./a/span[@class='articlename']/span[@class='chapterNumber']/text()")) + __list_get(h3_item.xpath("./a/span[@class='articlename']/@title")): __list_get(h3_item.xpath("./a/@href"))})
        chapter_item_list = course_unit.xpath("./div")
        if chapter_item_list:
            recursive_course_dict(chapter_item_list, chapter_dict)

注释:

这段代码定义了一个名为`recursive_course_dict`的函数,该函数接受两个参数:`course_unit_list`和`chapter_dict`。

函数的作用是遍历`course_unit_list`中的每个课程单元,并从中提取章节信息,将其添加到`chapter_dict`字典中。具体来说,对于每个课程单元,函数会使用XPath表达式从其HTML结构中提取出包含章节信息的`h3`元素列表。然后,对于每个`h3`元素,函数会从中提取章节号、文章名和标题等信息,并将其作为键值对添加到`chapter_dict`字典中。同时,函数还会提取出每个`h3`元素的`href`属性值,并将其作为对应的值添加到字典中。

接下来,函数会获取当前课程单元下的所有`div`元素,如果存在这样的元素,则递归调用`recursive_course_dict`函数,将它们作为新的课程单元列表传入,以便继续提取章节信息。

总之,这段代码的主要作用是从HTML结构中提取课程章节信息,并将其存储在一个字典中,以方便后续处理和访问。

今天有点忙,暂且到这吧,下面是测试成功视频

这是个视频文件,同时运行了四个账号,并且每个账号都是多线程进行的“学习”

原视频跳转

交流方式

QQ1219235650(小号)
[email protected]

你可能感兴趣的:(学习,python,视频,视频编解码)