├── Video └── .gitkeep ├── requirements.txt ├── crawl_xuexi ├── __init__.py ├── api.py ├── threads.py ├── DownloadProgress.py ├── user_agent.py └── xuexi.py ├── favicon.ico ├── screenshot ├── 9.gif ├── BaiduHi_2019-4-8_16-26-42.png └── BaiduHi_2023-10-19_3-41-33.jpg ├── .gitignore ├── docker-compose.yml ├── .dockerignore ├── Dockerfile ├── docker-compose.debug.yml ├── .github └── workflows │ └── dockerimage.yml ├── main.py ├── README.md └── data └── ml.json /Video/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | -------------------------------------------------------------------------------- /crawl_xuexi/__init__.py: -------------------------------------------------------------------------------- 1 | from .xuexi import Xuexi -------------------------------------------------------------------------------- /crawl_xuexi/api.py: -------------------------------------------------------------------------------- 1 | 2 | _host= r"https://www.xuexi.cn" 3 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jianboy/crawl_xuexi/HEAD/favicon.ico -------------------------------------------------------------------------------- /screenshot/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jianboy/crawl_xuexi/HEAD/screenshot/9.gif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /__pycache__ 3 | /data 4 | /dist 5 | /build 6 | *.pyc 7 | *.mp3 8 | *.mp4 -------------------------------------------------------------------------------- /screenshot/BaiduHi_2019-4-8_16-26-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jianboy/crawl_xuexi/HEAD/screenshot/BaiduHi_2019-4-8_16-26-42.png -------------------------------------------------------------------------------- /screenshot/BaiduHi_2023-10-19_3-41-33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jianboy/crawl_xuexi/HEAD/screenshot/BaiduHi_2023-10-19_3-41-33.jpg -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | crawl_xuexi: 5 | image: crawl_xuexi 6 | build: . 7 | ports: 8 | - 3000:3000 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | Dockerfile* 4 | docker-compose* 5 | .dockerignore 6 | .git 7 | .gitignore 8 | .env 9 | */bin 10 | */obj 11 | README.md 12 | LICENSE 13 | .vscode -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:alpine 2 | 3 | LABEL Name=crawl_xuexi Version=1.0.1 4 | EXPOSE 3000 5 | 6 | WORKDIR /app 7 | ADD . /app 8 | RUN python3 -m pip install -r requirements.txt 9 | CMD ["python3", "-m", "main.py"] -------------------------------------------------------------------------------- /docker-compose.debug.yml: -------------------------------------------------------------------------------- 1 | version: '2.1' 2 | 3 | services: 4 | crawl_xuexi: 5 | image: crawl_xuexi 6 | build: 7 | context: . 8 | dockerfile: Dockerfile 9 | ports: 10 | - 3000:3000 11 | -------------------------------------------------------------------------------- /.github/workflows/dockerimage.yml: -------------------------------------------------------------------------------- 1 | name: Docker Image CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | - release/* 8 | 9 | jobs: 10 | 11 | build: 12 | 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v1 17 | - name: Build the Docker image 18 | run: docker build . --file Dockerfile --tag crawl_xuexi:$(date +%s) 19 | -------------------------------------------------------------------------------- /crawl_xuexi/threads.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ''' 3 | 多线程下载多文件;多线程分段下载单文件. 4 | @Auther :liuyuqi.gov@msn.cn 5 | @date :2019/4/8 6 | ''' 7 | __author__ = "liuyuqi" 8 | 9 | from threading import Lock 10 | from threading import Thread 11 | 12 | threadLock = Lock() 13 | threads = [] 14 | 15 | 16 | class MyThread(Thread): 17 | def __init__(self, name, func, *args, lock=False): 18 | Thread.__init__(self) 19 | self.name = name 20 | self.func = func 21 | self.args = args 22 | self.lock = lock 23 | 24 | def run(self): 25 | print("开启: " + self.name) 26 | if self.lock: 27 | threadLock.acquire() 28 | self.func(*self.args) 29 | threadLock.release() 30 | else: 31 | self.func(*self.args) 32 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ''' 3 | @Auther :liuyuqi.gov@msn.cn 4 | @date :2019/4/8 5 | ''' 6 | __author__ = "liuyuqi" 7 | 8 | import time,os ,sys 9 | from crawl_xuexi import Xuexi 10 | 11 | def banner(): 12 | print(""" 13 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 14 | / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ 15 | ( X | u | e | x | i | . | c | n | | v | i | d | e | o | s ) 16 | \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ 17 | """) 18 | print("Author: liuyuqi") 19 | 20 | if __name__ == '__main__': 21 | banner() 22 | start_time = time.time() 23 | if not os.path.exists("Video"): 24 | os.mkdir("Video") 25 | if len(sys.argv) == 2: 26 | url = sys.argv[1] 27 | else: 28 | url = input( 29 | "请输入“学习慕课”下面的免费课程链接:(eg:https://www.xuexi.cn/9f584b49d8a7386a4cf248ce16f5e667/9b0f04ec6509904be734f5f609a3604a.html)") 30 | xuexi=Xuexi() 31 | xuexi.crawl(url) 32 | print("last time: {} s".format(time.time() - start_time)) 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## crawl_xuexi 2 | 3 | ### 功能介绍 4 | 5 | 本项目初衷是下载 学习强国APP(www.xuexi.cn)上面的机器学习课程.后续用户需求,**支持所有 “学习慕课”栏目下的课程下载**。 6 | 7 | - [x] 课程批量下载 8 | - [x] 电台音频下载 9 | - [x] 多线程 10 | - [x] 支持断点续传 11 | 12 | 《机器学习课程》 13 | 链接:https://pan.baidu.com/s/1U8Nu4ZStfpQfuCnaoXmWIg 14 | 提取码:3b3s 15 | 16 | 由于"学习强国APP"上视频采用cdn分发,而百度云下载限速,所以建议直接用本项目程序下载视频,方便,迅速. 17 | 18 | ![](screenshot/BaiduHi_2019-4-8_16-26-42.png) 19 | ![](screenshot/BaiduHi_2023-10-19_3-41-33.jpg) 20 | 21 | ### 使用 22 | 1. 到 https://github.com/jianboy/crawl_xuexi/releases 下载 crwal_xuexi.zip 可执行文件. 23 | 24 | 2. 双击打开 crwal_xuexi.exe 执行程序。 25 | 26 | 3. 输入需要下载的“学习慕课”栏目某课程.视频自动下载到 Video 文件夹 27 | 28 | ![](screenshot/9.gif) 29 | 30 | **举例:** 31 | 32 | 下载机器学习视频,输入视频链接: 33 | 34 | ![](http://cdn.yoqi.me/direct/2019-09-24/1.gif) 35 | 36 | ### 初衷 37 | 38 | 写这个项目的初衷是,目前机器学习对我国前途命运很重要,网络上这类课程大都收费,斯坦福机器学习,吴恩达课程等都是英文授课.而学习强国上却免费提供清华大学机器学习课程,可以直接学习了. 39 | 40 | **我个人看教程视频喜欢加速看,一般1.5倍加速看,在网上看着实累人.所以想到直接下载视频咯**.此外,这个项目更改下链接,还可以下载其他教程视频.所以分享给大家. 41 | 42 | ### 更新历史 43 | 44 | - [x] 已实现多线程下载 . 45 | 46 | - [x] 已实现“学习强国APP”下**任意**的“学习慕课”栏目视频下载. 47 | 48 | - [x] 已实现 docker 部署. 49 | 50 | ### 版权说明 51 | 52 | 本项目开源,免费使用,无任何限制,下载的课件视频建议个人使用,请勿以盈利性目的分发哦. 53 | 54 | 仅供技术交流,有关部门认清形势,请勿随意请喝茶,喝咖啡欢迎! 55 | 56 | QQ小群:772583198 -------------------------------------------------------------------------------- /crawl_xuexi/DownloadProgress.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ''' 3 | 下载进度 4 | @Auther :liuyuqi.gov@msn.cn 5 | @date :2019/4/8 6 | ''' 7 | __author__ = "liuyuqi" 8 | 9 | 10 | class DownloadProgress(object): 11 | def __init__(self, title, count=0.0, run_status=None, fin_status=None, total=100.0, unit='', sep='/', 12 | chunk_size=1.0): 13 | super(DownloadProgress, self).__init__() 14 | self.info = "[%s] %s %.2f %s %s %.2f %s" 15 | self.title = title 16 | self.total = total 17 | self.count = count 18 | self.chunk_size = chunk_size 19 | self.status = run_status or "" 20 | self.fin_status = fin_status or " " * len(self.status) 21 | self.unit = unit 22 | self.seq = sep 23 | 24 | def __get_info(self): 25 | # 【名称】状态 进度 单位 分割线 总数 单位 26 | _info = self.info % ( 27 | self.title, self.status, self.count / self.chunk_size, self.unit, self.seq, self.total / self.chunk_size, 28 | self.unit) 29 | return _info 30 | 31 | def refresh(self, count=1, status=None): 32 | self.count += count 33 | # if status is not None: 34 | self.status = status or self.status 35 | end_str = "\r" 36 | if self.count >= self.total: 37 | end_str = '\n' 38 | self.status = status or self.fin_status 39 | print(self.__get_info(), end=end_str) 40 | -------------------------------------------------------------------------------- /crawl_xuexi/user_agent.py: -------------------------------------------------------------------------------- 1 | # -*-coding:utf-8 -*- 2 | 3 | import random 4 | 5 | # 返回一个随机的请求头 headers 6 | def getheaders(): 7 | # 各种PC端 8 | user_agent_list_2 = [ 9 | # Opera 10 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60", 11 | "Opera/8.0 (Windows NT 5.1; U; en)", 12 | "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50", 13 | "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50", 14 | # Firefox 15 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0", 16 | "Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10", 17 | # Safari 18 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", 19 | # chrome 20 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.2171.71 Safari/537.36", 21 | "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/72.0.1271.64 Safari/537.11", 22 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/66.0.648.133 Safari/534.16", 23 | # 360 24 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36", 25 | "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko", 26 | # 淘宝浏览器 27 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11", 28 | # 猎豹浏览器 29 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER", 30 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)", 31 | "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)", 32 | # QQ浏览器 33 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)", 34 | "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)", 35 | # sogou浏览器 36 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0", 37 | "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)", 38 | # maxthon浏览器 39 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36", 40 | # UC浏览器 41 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36", 42 | ] 43 | # 各种移动端 44 | user_agent_list_3 = [ 45 | # IPhone 46 | "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", 47 | # IPod 48 | "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", 49 | # IPAD 50 | "Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5", 51 | "Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", 52 | # Android 53 | "Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", 54 | "Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", 55 | # QQ浏览器 Android版本 56 | "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1", 57 | # Android Opera Mobile 58 | "Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10", 59 | # Android Pad Moto Xoom 60 | "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", 61 | # BlackBerry 62 | "Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+", 63 | # WebOS HP Touchpad 64 | "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0", 65 | # Nokia N97 66 | "Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124", 67 | # Windows Phone Mango 68 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)", 69 | # UC浏览器 70 | "UCWEB7.0.2.37/28/999", 71 | "NOKIA5700/ UCWEB7.0.2.37/28/999", 72 | # UCOpenwave 73 | "Openwave/ UCWEB7.0.2.37/28/999", 74 | # UC Opera 75 | "Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999" 76 | ] 77 | UserAgent = random.choice(user_agent_list_2) # 这里只用list1 78 | headers = {'User-Agent': UserAgent} 79 | return headers 80 | -------------------------------------------------------------------------------- /crawl_xuexi/xuexi.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- encoding: utf-8 -*- 3 | ''' 4 | @Contact : liuyuqi.gov@msn.cn 5 | @Time : 2019/4/8 6 | @License : Copyright © 2017-2022 liuyuqi. All Rights Reserved. 7 | @Desc : main xuexi 8 | ''' 9 | import re,json,requests,os 10 | from concurrent.futures import ThreadPoolExecutor 11 | from . import DownloadProgress 12 | from contextlib import closing 13 | from urllib.parse import urlparse, parse_qs 14 | 15 | class Xuexi(object): 16 | ''' xuexi class ''' 17 | 18 | def __init__(self): 19 | self.sess= requests.Session() 20 | 21 | def get_video_links(self,url:str) -> list[str]: 22 | ''' get video links ''' 23 | video = self.sess.get(url=url).content.decode("utf8") 24 | pattern = r'https://video.xuexi.cn/[^,"]*mp4' 25 | link = re.findall(pattern, video, re.I) 26 | link.reverse() 27 | return link 28 | 29 | def download(self,url:str, file_name:str, type:str = "mp4"): 30 | ''' download video 31 | :param url: download url path 32 | :return: file 33 | ''' 34 | headers = { 35 | "Sec-Fetch-Dest": "video", 36 | "Sec-Fetch-Mode": "no-cors", 37 | "Sec-Fetch-Site": "same-site", 38 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36", 39 | "Referer": "https://www.xuexi.cn/" 40 | } 41 | with closing(self.sess.get(url=url, stream=True, headers=headers)) as response: 42 | chunk_size = 1024 43 | content_size = int(response.headers['content-length']) 44 | if type == "mp4": 45 | file_D = './Video/' + file_name + '.mp4' 46 | else: 47 | file_D = './Video/' + file_name + '.mp3' 48 | if (os.path.exists(file_D) and os.path.getsize(file_D) == content_size): 49 | print('跳过' + file_name) 50 | else: 51 | progress = DownloadProgress.DownloadProgress(file_name, total=content_size, unit="KB", 52 | chunk_size=chunk_size, 53 | run_status="正在下载", fin_status="下载完成") 54 | with open(file_D, "wb") as file: 55 | for data in response.iter_content(chunk_size=chunk_size): 56 | file.write(data) 57 | progress.refresh(count=len(data)) 58 | 59 | def crawl(self, url:str): 60 | ''' crawl ''' 61 | pool = ThreadPoolExecutor(max_workers=10) # 创建一个最大可容纳10个task的线程池 62 | if (url.startswith("https://www.xuexi.cn/lgpage/detail/index.html")): 63 | lessonList = self.getLessonListByLgPage(url) 64 | mlData = json.loads(lessonList) 65 | for i in range(len(mlData["sub_items"])): 66 | frst_name = mlData["sub_items"][i]["title"].replace(" ", "") 67 | # find video 68 | try: 69 | for j in range(len(mlData["sub_items"][i]["videos"][0]["video_storage_info"])): 70 | res = mlData["sub_items"][i]["videos"][0]["video_storage_info"][j]["normal"] 71 | if ".mp4" in res: 72 | break 73 | pool.submit(self.download, res, frst_name) 74 | except Exception as e: 75 | pass 76 | 77 | # find voice 78 | try: 79 | for j in range(len(mlData["sub_items"][i]["audios"][0]["audio_storage_info"])): 80 | res2 = mlData["sub_items"][i]["audios"][0]["audio_storage_info"][j]["url"] 81 | if ".mp3" in res2: 82 | break 83 | pool.submit(self.download, res2, frst_name, "mp3") 84 | except Exception as e: 85 | pass 86 | else: 87 | lessonList = self.getLessonList(url) 88 | mlData = json.loads(lessonList) 89 | print("已配置10个线程下载") 90 | for i in range((len(mlData["fpe1ki18v228w00"]))): 91 | frst_name = mlData["fpe1ki18v228w00"][i]["frst_name"].replace( 92 | '\t', ' ') 93 | static_page_url = mlData["fpe1ki18v228w00"][i]["static_page_url"] 94 | # 打开 mp4 视频网页链接 95 | resData = self.sess.get(static_page_url).content.decode("utf8") 96 | preUrl = static_page_url.split("/")[3] 97 | pattern = r'src="./data(.*?)">' 98 | url = "https://www.xuexi.cn/" + preUrl + \ 99 | "/data" + re.findall(pattern, resData, re.I)[0] 100 | res = self.get_video_links(url)[0] 101 | print("已解析第 %s 个视频的下载地址:%s" % (i, res)) 102 | pool.submit(self.download, res, frst_name) # 往线程池里面加入一个task 103 | 104 | def getLessonListByLgPage(self, url): 105 | ''' 106 | 针对新格式 url 解析视频 107 | https://www.xuexi.cn/lgpage/detail/index.html?id=3645649255073663875 108 | ''' 109 | # get the id from url 110 | parsed_url = urlparse(url) 111 | query_params = parse_qs(parsed_url.query) 112 | lesson_id = query_params.get('id', None)[0] 113 | newUrl = r"https://boot-source.xuexi.cn/data/app/" + lesson_id + ".js" 114 | resData = self.sess.get(url=newUrl).content.decode("utf8") 115 | print("已解析视频列表数据...") 116 | return resData[9:-1] 117 | 118 | def getLessonList(self, url): 119 | resData = self.sess.get(url=url).content.decode("utf8") 120 | print("已解析视频列表数据...") 121 | pattern = r'src="./data(.*?)">' 122 | preUrl = url.split("/")[3] 123 | jsonUrl = "https://www.xuexi.cn/" + preUrl + \ 124 | "/data" + re.findall(pattern, resData, re.I)[0] 125 | resData2 = self.sess.get(url=jsonUrl).content.decode("utf8") 126 | print("已请求视频列表数据...") 127 | return resData2[14:-1] -------------------------------------------------------------------------------- /data/ml.json: -------------------------------------------------------------------------------- 1 | {"fpe1ki18v228w00":[{"mooc_class":"第一章 概述","_id":"5ca1682c31bd47137685c408","frst_name":"1.1\t机器学习定义和典型应用","static_page_url":"https://www.xuexi.cn/d45a7c5b0c00760d039221a1d5053b57/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":1,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca1686f6c4687573d7a7bbf","frst_name":"1.2 机器学习和人工智能的关系","static_page_url":"https://www.xuexi.cn/d5c27d1c2a2be714985c6c39c9baef7f/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":2,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca1689292530556cff8f04e","frst_name":"1.3 深度学习方法和其它人工智能方法的共性和差异","static_page_url":"https://www.xuexi.cn/47c5e6d199a49228fb12bf6b72608d63/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":3,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca168a464c923146eea5a73","frst_name":"1.4 机器学习和数据挖掘的关系","static_page_url":"https://www.xuexi.cn/b8ec9a87fdbf7db50b45270bc0f1e11d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":4,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca168bd1e73720a9030fe1c","frst_name":"1.5 机器学习和统计学习的关系","static_page_url":"https://www.xuexi.cn/ae002e71b1ee055eb1e7e5a819f68d21/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":5,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca168ce4b05bd3140828196","frst_name":"1.6 机器学习的发展历程","static_page_url":"https://www.xuexi.cn/c3b3193012c469f11987dde2cc542bda/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":6,"status":"已发布"},{"mooc_class":"第一章 概述","_id":"5ca168dce43fcb3155fdd96d","frst_name":"1.7 大数据机器学习的主要特点","static_page_url":"https://www.xuexi.cn/6048081efce74df5de2401abf761517e/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":7,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16aadf2269035d8fb9616","frst_name":"2.1 机器学习的基本术语","static_page_url":"https://www.xuexi.cn/c5b764301fb621134dbf4ae3f79d5d95/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":8,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16ac284b34a0b139ed8e9","frst_name":"2.2 监督学习","static_page_url":"https://www.xuexi.cn/3c3a08501eb957c2f98117a3b5f3d564/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":9,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16ad405cc0a2da14ccbe7","frst_name":"2.3 假设空间","static_page_url":"https://www.xuexi.cn/3e1b4b2040350de432112d0144186757/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":10,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16ae639128d1c6e7a37fe","frst_name":"2.4 学习方法三要素","static_page_url":"https://www.xuexi.cn/bfba8bcee07c2143fabddb86b6da69eb/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":11,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b009ac80851e61c2f96","frst_name":"2.5 奥卡姆剃刀定理","static_page_url":"https://www.xuexi.cn/b1851c1636146f7baed6de9e4c280e9f/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":12,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b12cb0f9324afe3c91b","frst_name":"2.6 没有免费的午餐定理","static_page_url":"https://www.xuexi.cn/c1850f6d9648ad0a5eb0afc0cad41ec5/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":13,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b24aa822431806f03ac","frst_name":"2.7 训练误差和测试误差","static_page_url":"https://www.xuexi.cn/2ce85b2e6a7d6d58c953b72514782d9c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":14,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b365afba8502d9f12a4","frst_name":"2.8 过拟合与模型选择","static_page_url":"https://www.xuexi.cn/a851e5f423fe8fd1d1ae861d796bec2d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":15,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b4432715e1c9a2ce05b","frst_name":"2.9 泛化能力","static_page_url":"https://www.xuexi.cn/2210247d283be6f368d8d802bafc63d3/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":16,"status":"已发布"},{"mooc_class":"第二章 机器学习基本概念","_id":"5ca16b546c4687573d7a7bc3","frst_name":"2.10 生成模型和判别模型","static_page_url":"https://www.xuexi.cn/570927779b5097fdcb49b82ad02f8044/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":17,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca173bd78c5f0157f6534e4","frst_name":"3.1 留出法","static_page_url":"https://www.xuexi.cn/13b3f27fb07b1c29b30240c4cce61e14/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":18,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca17418b8b164114f68bdb1","frst_name":"3.2 交叉验证法","static_page_url":"https://www.xuexi.cn/d61bd4830c752c2a5f3b890d1caff36d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":19,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca17428d78ae91cc12bd071","frst_name":"3.3 自助法","static_page_url":"https://www.xuexi.cn/61e8abcf5c0b3517434a42b9a539b933/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":20,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca1744fefc03a35ce5678bd","frst_name":"3.4 性能度量","static_page_url":"https://www.xuexi.cn/612474f3f94c8bd720bca1111eeba92e/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":21,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca1745e3788b653cbfa4cb6","frst_name":"3.5 PR曲线","static_page_url":"https://www.xuexi.cn/70238daf3092e8bf65de1683ca870e75/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":22,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca1748972a783613e674bae","frst_name":"3.6 ROC和AUC曲线","static_page_url":"https://www.xuexi.cn/a3777374e46ca980b910b7ff5b056c2b/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":23,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca17498485a560ad3f03293","frst_name":"3.7 代价敏感错误率","static_page_url":"https://www.xuexi.cn/46ee72290e11a63215dacd29c5c482b6/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":24,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca174a7eac9911cc7c5bdfb","frst_name":"3.8 假设检验","static_page_url":"https://www.xuexi.cn/57916dc3f53d4e311543f6e5620fcb48/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":25,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca174bbe9ae795546696262","frst_name":"3.9 T检验","static_page_url":"https://www.xuexi.cn/a5f296936f5c43bb92e1fa5033c5628e/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":26,"status":"已发布"},{"mooc_class":"第三章 模型性能评估","_id":"5ca174cf24e2f62c1e79ea5f","frst_name":"3.10 偏差和方差","static_page_url":"https://www.xuexi.cn/f9ed2d693815d76ace26112cb3fba8b1/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":27,"status":"已发布"},{"mooc_class":"第四章 感知机","_id":"5ca174e45eed890aff62670a","frst_name":"4.1 感知机模型","static_page_url":"https://www.xuexi.cn/023eec4b50b491b347619324fd3c33da/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":28,"status":"已发布"},{"mooc_class":"第四章 感知机","_id":"5ca1af12922ecd1c7f1abe43","frst_name":"4.2 感知机学习策略","static_page_url":"https://www.xuexi.cn/8c79310a37ea1db908bc39c67764c033/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":29,"status":"已发布"},{"mooc_class":"第四章 感知机","_id":"5ca1af273fb3086bd1ec053f","frst_name":"4.3 感知机学习算法","static_page_url":"https://www.xuexi.cn/04ad4b00d32d56193d68496ae66bd52c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":30,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1af3c99dd271c31ac436c","frst_name":"5.1 原型聚类描述","static_page_url":"https://www.xuexi.cn/8d5c41e1787ce7f2ac1e1057ffd4a6fa/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":31,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1af4eefc03a35ce5678ec","frst_name":"5.2 性能度量","static_page_url":"https://www.xuexi.cn/985604664fb90134c047cf63e53d8e2d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":32,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1af678f9dda611861c395","frst_name":"5.3.1 原型聚类 k均值算法","static_page_url":"https://www.xuexi.cn/e624ebb0857baf701170fcf8bdd0ba1d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":33,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1af7639128d1c6e7a383a","frst_name":"5.3.2 原型聚类 学习向量算法","static_page_url":"https://www.xuexi.cn/a16d8bc7b87ffe14f6bd7befc43810db/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":34,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1af8781849657692444c7","frst_name":"5.3.3 原型聚类 密度聚类","static_page_url":"https://www.xuexi.cn/0f6e5fa14a616116da95348ec9ca7a74/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":35,"status":"已发布"},{"mooc_class":"第五章 聚类","_id":"5ca1afbdb1d5cc51bab8d2a2","frst_name":"5.3.4 原型聚类 层次聚类","static_page_url":"https://www.xuexi.cn/a493144196fb79b9d7f8062370d622d2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":36,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b2c248974361f778a0e1","frst_name":"6.1 综述","static_page_url":"https://www.xuexi.cn/cf2c6e7f2e6ce152243c8a4d8368a1fa/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":37,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b2d34b05bd31408281da","frst_name":"6.2 概率图模型","static_page_url":"https://www.xuexi.cn/0906fb2e77bb0c492b4b26eb4fb85e03/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":38,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b2e25993e01164d9cdb1","frst_name":"6.3 贝叶斯网络","static_page_url":"https://www.xuexi.cn/945da2c0dcf25f03955ada23d4d219b6/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":39,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b2f932715e1c9a2ce09f","frst_name":"6.4 朴素贝叶斯分类器","static_page_url":"https://www.xuexi.cn/22304261cc8270a14cc2b2feadbb1816/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":40,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b30c24e2f62c1e79ea92","frst_name":"6.5 半朴素贝叶斯分类器","static_page_url":"https://www.xuexi.cn/dcd321a7c5fc15a5a95ba15ef6204743/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":41,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b31bd84eed110dc6a156","frst_name":"6.6 贝叶斯网络结构学习推断","static_page_url":"https://www.xuexi.cn/692e83a3538059f5c6e07f15db5628a2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":42,"status":"已发布"},{"mooc_class":"第六章 贝叶斯分类器及图模型","_id":"5ca1b32a4a86311485f37e35","frst_name":"6.7 吉布斯采样","static_page_url":"https://www.xuexi.cn/cd528ce9fea23080467897fae557499f/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":43,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b678e5f56451a6a177a2","frst_name":"7.1 本章简介","static_page_url":"https://www.xuexi.cn/43f0e532b1eac6c21bbde9f4d7035617/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":44,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b68de2504a11447372d0","frst_name":"7.2 决策树模型与学习基本概念","static_page_url":"https://www.xuexi.cn/37e7c86e7e1ec595aaf5f0bd0814d287/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":45,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b69f90006c250eeff34e","frst_name":"7.3 信息量和熵","static_page_url":"https://www.xuexi.cn/819f26b99b04bd21606d2b537a54c722/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":46,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b6af461819506c6577ba","frst_name":"7.4 决策树的生成","static_page_url":"https://www.xuexi.cn/b3ac0a7ca7faedfa245a81f3f751aebe/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":47,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b6bdcb0f9324afe3c968","frst_name":"7.5 决策树的减枝","static_page_url":"https://www.xuexi.cn/27b9901834adf68e2d525659c9a53a81/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":48,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b6cc48974361f778a0ef","frst_name":"7.6 CART算法","static_page_url":"https://www.xuexi.cn/3747cde01269729569c4799fcea046ec/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":49,"status":"已发布"},{"mooc_class":"第七章 决策树和随机森林","_id":"5ca1b6ef812382116fcd586f","frst_name":"7.7 随机森林","static_page_url":"https://www.xuexi.cn/5a0dc5005f341138a5b7bc5f58bbb672/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":50,"status":"已发布"},{"mooc_class":"第八章 逻辑斯谛回归与最大熵模型","_id":"5ca1b78a485a560ad3f032cf","frst_name":"8.1 本章简介","static_page_url":"https://www.xuexi.cn/2d7e1877d4306b3caf5ca33856b79e78/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":51,"status":"已发布"},{"mooc_class":"第八章 逻辑斯谛回归与最大熵模型","_id":"5ca1b7c564c923146eea5acd","frst_name":"8.2 逻辑斯谛回归模型","static_page_url":"https://www.xuexi.cn/41d5bc9ab7f734ba29d46edc7fd1d177/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":52,"status":"已发布"},{"mooc_class":"第八章 逻辑斯谛回归与最大熵模型","_id":"5ca1b7d9461819506c6577bf","frst_name":"8.3 最大熵模型","static_page_url":"https://www.xuexi.cn/167891331394962876c1e684bd8e5b60/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":53,"status":"已发布"},{"mooc_class":"第八章 逻辑斯谛回归与最大熵模型","_id":"5ca1b7b23620ae42a40b8da1","frst_name":"8.4 模型学习的最优化方法","static_page_url":"https://www.xuexi.cn/74ce97fc87c648b49b31b95b118b4477/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":54,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bab8d6b506115afb4f2b","frst_name":"9.1 本章简介","static_page_url":"https://www.xuexi.cn/3b36e9f8e5f833ff58e8cd2e6af0437b/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":55,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bad4e8b7f50abc75c1ca","frst_name":"9.2 SVM简介","static_page_url":"https://www.xuexi.cn/0ce50975c0a1bf424f9eecf69b3eaaa4/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":56,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bae41e73720a9030fe67","frst_name":"9.3 线性可分支持向量机","static_page_url":"https://www.xuexi.cn/001a52f5306171793ac1d0fa87cd7edb/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":57,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bb088e119a555b1f84e3","frst_name":"9.4 凸优化问题的基本概念","static_page_url":"https://www.xuexi.cn/eaadfe83bc475c68cb6256205d3bfefc/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":58,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bb193788b653cbfa4d02","frst_name":"9.5 支持向量的确切定义","static_page_url":"https://www.xuexi.cn/27a73131caa7fe5d7ddd95d3276f93f0/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":59,"status":"已发布"},{"mooc_class":"第九章 SVM","_id":"5ca1bb2d8061af7d7bd375d3","frst_name":"9.6 线性支持向量机","static_page_url":"https://www.xuexi.cn/77404f9059626fa63610445d51b3631d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":60,"status":"已发布"},{"mooc_class":"第十章 核方法与非线性SVM","_id":"5ca1ba99eac9911cc7c5be2d","frst_name":"10.1 本章简介","static_page_url":"https://www.xuexi.cn/03187a0829621afc4d43347c38629b39/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":61,"status":"已发布"},{"mooc_class":"第十章 核方法与非线性SVM","_id":"5ca1b9f8c3244b1124aaef3f","frst_name":"10.2 泛函基础知识","static_page_url":"https://www.xuexi.cn/7c131bd12fa839ccd45118c8804da762/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":62,"status":"已发布"},{"mooc_class":"第十章 核方法与非线性SVM","_id":"5ca1bd5424aa0d1284b5cf57","frst_name":"10.3 核函数和非线性支持向量机","static_page_url":"https://www.xuexi.cn/dc6447eec235700839344fa33cf3add2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":63,"status":"已发布"},{"mooc_class":"第十章 核方法与非线性SVM","_id":"5ca1bd6d48974361f778a0f8","frst_name":"10.4 序列最小最优化算法","static_page_url":"https://www.xuexi.cn/2e4fbdf674f41e4a21b099772b936b7c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":64,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1bde8a98fc72e6dc31c0b","frst_name":"11.1 本章简介","static_page_url":"https://www.xuexi.cn/41c737740f4b112b03596ca8e2d76cd7/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":65,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1be1d5a7a0c1c95b80142","frst_name":"11.2 k近邻学习","static_page_url":"https://www.xuexi.cn/31e50dde1ed526e585d4b234ab22c81b/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":66,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1be7b1e73720a9030fe78","frst_name":"11.3 降维嵌入","static_page_url":"https://www.xuexi.cn/c810e68a0eb103ea2ddb47ce666951e4/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":67,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1be93f8eda1147b142d23","frst_name":"11.4 主成分分析","static_page_url":"https://www.xuexi.cn/6cba243825b5b16f26a6ffc0f08c450d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":68,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1bea7695dd160b6458842","frst_name":"11.5 核化线性降维","static_page_url":"https://www.xuexi.cn/cd3ab8c8b235b56c05b27485e8c31452/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":69,"status":"已发布"},{"mooc_class":"第十一章 降维与度量学习","_id":"5ca1beebe5f56451a6a177ad","frst_name":"11.6 流型学习和度量学习","static_page_url":"https://www.xuexi.cn/8b39616e3e2fa783fbbd56a97877287a/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":70,"status":"已发布"},{"mooc_class":"第十二章 提升方法","_id":"5ca1c16a81849657692444f8","frst_name":"12.1 提升方法Adaboost算法","static_page_url":"https://www.xuexi.cn/71ed48ec98fe2a487b1dd56aea52d2df/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":71,"status":"已发布"},{"mooc_class":"第十二章 提升方法","_id":"5ca1c180461819506c6577d0","frst_name":"12.2 Adaboost算法的训练误差分析","static_page_url":"https://www.xuexi.cn/2258b0a7e558b2dcc88a1cb857e4a8b2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":72,"status":"已发布"},{"mooc_class":"第十二章 提升方法","_id":"5ca1c19680dfcf2e9946d238","frst_name":"12.3 Adaboost算法的解释","static_page_url":"https://www.xuexi.cn/3adae0f95457a27e0c62bae640353558/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":73,"status":"已发布"},{"mooc_class":"第十二章 提升方法","_id":"5ca1c1c93fb3086bd1ec0562","frst_name":"12.4 Adaboost的实现","static_page_url":"https://www.xuexi.cn/4cbc654599baac14050d121a1859651d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":74,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c448f2269035d8fb9680","frst_name":"13.1 本章简介","static_page_url":"https://www.xuexi.cn/0b7a8e016d012dcf0fe883bb71331928/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":75,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c45fe9ae7955466962b5","frst_name":"13.2 问题提出","static_page_url":"https://www.xuexi.cn/5cc51a32315173629dbfe35ed8e4aec7/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":76,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c48672a783613e674bf8","frst_name":"13.3 EM算法的引入","static_page_url":"https://www.xuexi.cn/b42feee7691ece45284b7e64afc19d08/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":77,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c49aaa822431806f041b","frst_name":"13.4 EM算法的收敛性","static_page_url":"https://www.xuexi.cn/faee94f7e9177f4058a6c62d4c7b27b2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":78,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c4aff2269035d8fb9681","frst_name":"13.5 EM算法在高斯混合模型学习中的应用","static_page_url":"https://www.xuexi.cn/fc55d5799bb967a4ab84da22961d2fee/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":79,"status":"已发布"},{"mooc_class":"第十三章 EM算法及混合高斯模型","_id":"5ca1c4cdc2b0875700998f10","frst_name":"13.6 EM算法的推广","static_page_url":"https://www.xuexi.cn/ebcc4e845a05df787448b52dcd760619/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":80,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c7329ac80851e61c2ff9","frst_name":"14.1 本章简介","static_page_url":"https://www.xuexi.cn/88c9d9a62fd2fdf4cce74d423225db71/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":81,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c754d1f15c518e818904","frst_name":"14.2 计算学习理论的基础知识","static_page_url":"https://www.xuexi.cn/a9bea52bf4dd2bd8027d95a158dc0e5f/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":82,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c77793a80d3dfedfe21a","frst_name":"14.3 概率近似正确学习理论","static_page_url":"https://www.xuexi.cn/f49d8d052270984c54209dc01d60975a/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":83,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c7b424e2f62c1e79eabc","frst_name":"14.4 有限假设空间","static_page_url":"https://www.xuexi.cn/8a4e490c86a3e67acaf7a5be3dd7c4da/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":84,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c7d524aa0d1284b5cf73","frst_name":"14.5 VC维","static_page_url":"https://www.xuexi.cn/221ef2343463e9d4ca3c5277eabae121/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":85,"status":"已发布"},{"mooc_class":"第十四章 计算学习理论","_id":"5ca1c7fa5993e01164d9cded","frst_name":"14.6 学习稳定性","static_page_url":"https://www.xuexi.cn/04e4e3007f7c8338ec69de999ac569cb/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":86,"status":"已发布"},{"mooc_class":"第十五章 隐马尔可夫模型","_id":"5ca1c9112f8693773b2a0c18","frst_name":"15.1 本章简介","static_page_url":"https://www.xuexi.cn/32b6de0d7dfa3d10b20bb649a9218120/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":87,"status":"已发布"},{"mooc_class":"第十五章 隐马尔可夫模型","_id":"5ca1c9a34a86311485f37e6e","frst_name":"15.2 隐马尔科夫模型的基本概念","static_page_url":"https://www.xuexi.cn/6494f0683ad64e584d681c9b2dd48cde/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":88,"status":"已发布"},{"mooc_class":"第十五章 隐马尔可夫模型","_id":"5ca1c9ba80dfcf2e9946d251","frst_name":"15.3 概率计算算法","static_page_url":"https://www.xuexi.cn/99d39c75a847b6902bd78f056f5c450c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":89,"status":"已发布"},{"mooc_class":"第十五章 隐马尔可夫模型","_id":"5ca1c9de99dd271c31ac4396","frst_name":"15.4 学习算法","static_page_url":"https://www.xuexi.cn/7a7a05d4b74884736b9cacbbfe91e1d2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":90,"status":"已发布"},{"mooc_class":"第十五章 隐马尔可夫模型","_id":"5ca1ca296c4687573d7a7c2b","frst_name":"15.5 预测算法","static_page_url":"https://www.xuexi.cn/9ad0985307a7ea6ae70772098fa6c68c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":91,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1cd6b31bd47137685c493","frst_name":"16.1 本章简介","static_page_url":"https://www.xuexi.cn/0a4fabc075f21298a3492932adce47db/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":92,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1cdc184b34a0b139ed95a","frst_name":"16.2 概率无向图模型","static_page_url":"https://www.xuexi.cn/9d44f709a4b2ede9e50c95017d85f206/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":93,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1cdfc5eed890aff626779","frst_name":"16.3 条件随机场的定义与形式","static_page_url":"https://www.xuexi.cn/f948aa0cf22c3ab0ca346aadecdaf2cb/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":94,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1ce1faaf1ba0b2ee5aee0","frst_name":"16.4 条件随机场的计算问题","static_page_url":"https://www.xuexi.cn/58aef9ff330082ef6379833d3e3bcbf9/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":95,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1ce35e5088751cb4a9908","frst_name":"16.5 条件随机场的学习算法","static_page_url":"https://www.xuexi.cn/1db45376041e8019c5cebc9dc2a9341d/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":96,"status":"已发布"},{"mooc_class":"第十六章 条件随机场","_id":"5ca1ce5ad6b506115afb4f57","frst_name":"16.6 条件随机场的预测算法","static_page_url":"https://www.xuexi.cn/2f46d1bd926d06567869751767d64f79/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":97,"status":"已发布"},{"mooc_class":"第十七章 概率图模型的学习与推断","_id":"5ca1d01a539473614471572f","frst_name":"17.1 本章简介","static_page_url":"https://www.xuexi.cn/f0eed1feee984ef6d99d68b05e8909d1/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":98,"status":"已发布"},{"mooc_class":"第十七章 概率图模型的学习与推断","_id":"5ca1d039eba7711cb05e3f5c","frst_name":"17.2 精确推断法:变量消去法和信念传播法","static_page_url":"https://www.xuexi.cn/dadad7d41a3e041e8eb023b8e0aac2cf/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":99,"status":"已发布"},{"mooc_class":"第十七章 概率图模型的学习与推断","_id":"5ca1d04baa4ea15199df2e3e","frst_name":"17.3 近似推断法:MCMC和变分推断","static_page_url":"https://www.xuexi.cn/7644d14412903271738d3232733746a2/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":100,"status":"已发布"},{"mooc_class":"第十八章 神经网络和深度学习","_id":"5ca1d07489399477153e67b6","frst_name":"18.1 神经网络的发展历程","static_page_url":"https://www.xuexi.cn/455855bc1a3ee70f828c6fb1b43781f3/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":101,"status":"已发布"},{"mooc_class":"第十八章 神经网络和深度学习","_id":"5ca1d09f6c4687573d7a7c37","frst_name":"18.2 神经网络的基本概念以及常见的神经网络(一)","static_page_url":"https://www.xuexi.cn/6424c068b2ee5a310a206272b7dff026/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":102,"status":"已发布"},{"mooc_class":"第十八章 神经网络和深度学习","_id":"5ca1d18deba7711cb05e3f5e","frst_name":"18.3 神经网络的基本概念以及常见的神经网络(二)","static_page_url":"https://www.xuexi.cn/b4615ee3d89883321e904ab8d6d20d8b/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":103,"status":"已发布"},{"mooc_class":"第十八章 神经网络和深度学习","_id":"5ca1d1a593a80d3dfedfe22b","frst_name":"18.4 玻尔兹曼机","static_page_url":"https://www.xuexi.cn/ca13a0f7770ae67eb537f8199d1faafa/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":104,"status":"已发布"},{"mooc_class":"第十八章 神经网络和深度学习","_id":"5ca1d1bbe5f56451a6a177d4","frst_name":"18.5 深度学习","static_page_url":"https://www.xuexi.cn/6ce756d1ef5df5d44eb664582ee0f1fc/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":105,"status":"已发布"},{"mooc_class":"第十九章 深度学习正则化方法","_id":"5ca1d1e0eac9911cc7c5be5a","frst_name":"19.1 深度学习简介和架构设计","static_page_url":"https://www.xuexi.cn/dd2fb955c74273f1adca3c7b53274872/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":106,"status":"已发布"},{"mooc_class":"第十九章 深度学习正则化方法","_id":"5ca1d28fcf1fac2e8e364d0e","frst_name":"19.2 计算图形式的反向传播算法","static_page_url":"https://www.xuexi.cn/3d5fb24e1a55c150e8c2cfa0040f0365/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":107,"status":"已发布"},{"mooc_class":"第十九章 深度学习正则化方法","_id":"5ca1d28a7e877a221122606c","frst_name":"19.3 深度学习的正则化方法(一)","static_page_url":"https://www.xuexi.cn/3d9104a06a09bdb3fda2fa57ebd383e3/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":108,"status":"已发布"},{"mooc_class":"第十九章 深度学习正则化方法","_id":"5ca1d2a7922ecd1c7f1abe8c","frst_name":"19.4 深度学习的正则化方法(二)","static_page_url":"https://www.xuexi.cn/c1d9f4db30e636f1040908f2e8ad082c/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":109,"status":"已发布"},{"mooc_class":"第二十章 深度学习优化方法","_id":"5ca1d2c286c6fd3830106ebc","frst_name":"20.1 深度学习的优化问题","static_page_url":"https://www.xuexi.cn/3c86cda5a8d6133764e56d6b82283c82/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":110,"status":"已发布"},{"mooc_class":"第二十章 深度学习优化方法","_id":"5ca1d37389399477153e67bb","frst_name":"20.2 神经网络优化的挑战","static_page_url":"https://www.xuexi.cn/051b7c7d007b1fbfd9ed1880e82838e5/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":111,"status":"已发布"},{"mooc_class":"第二十章 深度学习优化方法","_id":"5ca1d39393a80d3dfedfe230","frst_name":"20.3 神经网络的优化算法","static_page_url":"https://www.xuexi.cn/148472b54cbde9f72c027368782b3017/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":112,"status":"已发布"},{"mooc_class":"第二十章 深度学习优化方法","_id":"5ca1d3a72bc9eb50620ab015","frst_name":"20.4 相关策略","static_page_url":"https://www.xuexi.cn/e4cfafc5dfd3eae50dbf316efee722b7/b2e5aa79be613aed1f01d261c4a2ae17.html","sort":113,"status":"已发布"}],"fp1oqv1mthfpmo01":{"list":{"thumb_image":"[{\"name\":\"asset-v1_TsinghuaX+70240403+2019_T1+type@asset+block@封面.jpg\",\"size\":37705,\"type\":\"image/jpeg\",\"imageInfo\":\"https://bootcdn.xuexi.cn/dyxx_5a1d70322da1335610ea6a87/1553823417018/9eda2394b610698818972935a9a65d53.jpg\",\"thumbInfo\":\"https://bootcdn.xuexi.cn/dyxx_5a1d70322da1335610ea6a87/1553823417018/9eda2394b610698818972935a9a65d53.jpg?x-oss-process=image/resize,w_200\"}]","frst_name":"大数据机器学习","content":null,"original_time":"2019-03-29 00:00","summary":"《大数据机器学习》课程是面向信息学科的高年级本科生或研究生开设的基础理论课,目的是培养学生深入理解大数据机器学习理论基础,牢固掌握大数据机器学习方法,并能够解决实际问题等综合能力。课程的主要内容包括:统计学习基本理论,机器学习基本方法,深度学习理论和方法。"}},"sysQuery":{"pageId":"9b0f04ec6509904be734f5f609a3604a","mooc":"大数据机器学习","post_id":"5c9d76c0a98fc72e6dc31b2b"}} --------------------------------------------------------------------------------