Giter Site home page Giter Site logo

foair / course-crawler Goto Github PK

View Code? Open in Web Editor NEW
728.0 44.0 198.0 840 KB

🎓 **大学MOOC、学堂在线、网易云课堂、好大学在线、爱课程 MOOC 课程下载。

Home Page: https://mooc.xoy.io

License: MIT License

Python 98.97% Dockerfile 0.94% Shell 0.08%
crawler mooc python3 requests xuetangx course icourse163 study netease tsinghua

course-crawler's People

Contributors

foair avatar siguremo avatar zsnmwy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

course-crawler's Issues

网易公开课抓取不完整

课程链接:http://open.163.com/special/opencourse/daishu.html
一共35节课,但只抓取前10节,如图
image
随意选取其他课,也只抓取前10节
后在课程页面按F12自行调查,如图
image
课程列表里的十节课后面的课要自行展开,右边网页代码也显示前边和后边的课并不是放在一起的,维护者可能忽略了这一点导致课程抓取不完整
还是希望哪位维护者可以抽空改一下,不胜感激.

下载学堂在线课程,课程信息和字幕都有,但是视频的链接没有

下载到最后了,出现了错误,试了两次都是这样,换了电脑也是

网站:学堂在线

课程地址:https://www.xuetangx.com/courses/course-v1%3ATsinghuaX%2B30240243X%2Bsp/about

问题描述:
Traceback (most recent call last):
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
ntrib\pyopenssl.py", line 472, in wrap_socket
cnx.do_handshake()
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\OpenSSL\SS
L.py", line 1915, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\OpenSSL\SS
L.py", line 1647, in _raise_ssl_error
_raise_current_error()
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\OpenSSL_u
til.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certific
ate verify failed')]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
nnectionpool.py", line 603, in urlopen
chunked=chunked)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
nnectionpool.py", line 344, in _make_request
self._validate_conn(conn)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
nnectionpool.py", line 843, in validate_conn
conn.connect()
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
nnection.py", line 350, in connect
ssl_context=context)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\ut
il\ssl
.py", line 355, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
ntrib\pyopenssl.py", line 478, in wrap_socket
raise ssl.SSLError('bad handshake: %r' % e)
ssl.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certi
ficate', 'certificate verify failed')],)",)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\requests\a
dapters.py", line 449, in send
timeout=timeout
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\co
nnectionpool.py", line 641, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\urllib3\ut
il\retry.py", line 399, in increment
raise MaxRetryError(pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xuetangx.com', port=
443): Max retries exceeded with url: /videoid2source/2B96ED0A2F3207729C33DC59013
07461 (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls

process_server_certificate', 'certificate verify failed')],)",),))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 66, in main
xuetangx.start(args.url, config, cookies)
File "D:\Konwledge\course-crawler-master\mooc\xuetangx.py", line 210, in start

get_content(courseware)

File "D:\Konwledge\course-crawler-master\mooc\xuetangx.py", line 139, in get_c
ontent
parse_res_list(video_list, rename, playlist.write, get_video)
File "D:\Konwledge\course-crawler-master\mooc\utils.py", line 337, in parse_re
s_list
res.operation(*operator)
File "D:\Konwledge\course-crawler-master\mooc\utils.py", line 56, in operation

func(self)

File "D:\Konwledge\course-crawler-master\mooc\xuetangx.py", line 49, in get_vi
deo
res = CANDY.get('https://xuetangx.com/videoid2source/' + video.meta).text
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\requests\s
essions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\requests\s
essions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\requests\s
essions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Swaggy\AppData\Roaming\Python\Python36\site-packages\requests\a
dapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='xuetangx.com', port=443)
: Max retries exceeded with url: /videoid2source/2B96ED0A2F3207729C33DC590130746
1 (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_proc
ess_server_certificate', 'certificate verify failed')],)",),))

网易**大学MOOC视频格式变化了,下载不了了

https://www.icourse163.org/learn/NUDT-1205969803?tid=1206265203

Traceback (most recent call last):
File "mooc.py", line 83, in
main()
File "mooc.py", line 72, in main
mooc.start(args.url, config, cookies)
File "D:\Program\course-crawler\moocs\icourse163.py", line 212, in start
get_resource(term_id)
File "D:\Program\course-crawler\moocs\icourse163.py", line 182, in get_resource
parse_res_list(video_list, rename, parse_resource, playlist.write)
File "D:\Program\course-crawler\moocs\utils.py", line 359, in parse_res_list
res.operation(*operator)
File "D:\Program\course-crawler\moocs\utils.py", line 63, in operation
func(self)
File "D:\Program\course-crawler\moocs\icourse163.py", line 76, in parse_resource
if WORK_DIR.need_download(file_name + ext, CONFIG["overwrite"]):
UnboundLocalError: local variable 'ext' referenced before assignment

video['format'] == 'mp4' 不成立了,变成hls了

执行mooc.py报错

执行mooc.py报错

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/SEU-1001752363

问题描述:
执行python mooc.py https://www.icourse163.org/course/SEU-1001752363报错
报错如下:
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 61, in main
from mooc import icourse163
File "D:\**大学mooc\course-crawler-master\mooc\icourse163.py", line 7, in
CANDY = Crawler()
File "D:\**大学mooc\course-crawler-master\mooc\utils.py", line 211, in init
super().init()
TypeError: super() takes at least 1 argument (0 given)

网易云课堂付费视频(flv文件)下载后,无法播放

问题描述: 借助您的程序,成功下载了网易云课堂付费课程的视频文件,视频文件格式是flv的,QuickTime Player,Elmedia Player,腾讯视频播放器,迅雷影音,百度影音,qq影音等播放器均无法播放此flv视频文件。想来网易应该对flv文件做了加密,请问有播放此flv视频文件的方法吗?

网站:网易云课堂 付费视频 已购买

课程地址:
https://study.163.com/course/courseLearn.htm?courseId=1003925022

输入地址有误

网站:网易云课堂 MOOC
课程地址:http://study.163.com/course/courseMain.htm?courseId=1003629025
问题描述:使用 python mooc.py http://study.163.com/course/courseMain.htm?courseId=1003629025
的时候,返回输入地址有误
这个链接指的就是您说的那个普通的网易云课堂吗?
————————————————————————
感谢您写的代码,实在是太方便了,我用来下mooc的解剖视频没有问题。

学堂在线字幕抓取错误

course-crawler/xuetangx.py

Lines 152 to 156 in 793fb45

if multi_subtitle:
sub_file_name = file_name + '_' + subtitle_url + '.str'
subtitle_url = base_subtitle_url + subtitle_url
print('$$$', subtitle_url)
print('$$$', sub_file_name)

仅判断了multi_subtitle下sub_file_name的值,而非multi_subtitle下sub_file_name的值未做定义。

**大学MOOC无法下载

(错误简述)

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/NJUST-1001755037?tid=1003279008

问题描述:无法下载

D:\Program\course-crawler>python mooc.py https://www.icourse163.org/course/NJUST-1001755037?tid=1003279008 -d "G:\MOOCs"
计算机网络基础及应用 - 南京理工大学
第一单元 计算机网络导论(5个教学视频,5个学生自主实验视频,时长56’54‘‘)
1.1 计算机网络的定义及其发展(1个视频,时长10’26‘’)
【视频】计算机网络的定义及其发展——教学视频
【文档】计算机网络的定义及其发展——PPT
【富文本】计算机网络的定义及其发展——视频内容
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 62, in main
icourse163.start(args.url, config)
File "D:\Program\course-crawler\mooc\icourse163.py", line 175, in start
get_resource(course_info[0])
File "D:\Program\course-crawler\mooc\icourse163.py", line 134, in get_resource
params = {'nosKey': re.search('nosKey":"(.+?)"', text[3]).group(1),
AttributeError: 'NoneType' object has no attribute 'group'

程序运行报错

下载完以后,仅有目录,没有视频链接 (请在这里填写错误简述)

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/TONGJI-53004 (网站中的示例地址)

问题描述:C:\Users\loli6\Desktop\course-crawler-master>python mooc.py https://www.icourse163.org/course/TONGJI-53004
高等数学(一) - 同济大学
第一周
第一讲 函数与极限
【视频】函数与初等函数
【视频】数列及其极限
【视频】收敛数列的性质
【视频】自变量趋于有限值时函数的极限
【视频】自变量趋于无穷大时函数的极限及函数极限的性质
【文档】函数与初等函数课件
【文档】函数的极限课件
【文档】数列的极限课件
第二讲 极限运算法则
【视频】无穷小与无穷大
【视频】极限的四则运算法则
【视频】复合函数的极限运算法则
【文档】无穷小与无穷大课件
【文档】极限运算法则课件
第二周
第三讲 两个重要极限和无穷小的比较
【视频】极限存在准则I和重要极限I
【视频】极限存在准则II和重要极限II
【视频】无穷小比较的定义
【视频】等价无穷小的性质
【文档】极限存在准则,两个重要极限课件
【文档】无穷小的比较课件
第四讲 连续及其性质
【视频】函数的连续性
【视频】函数的间断点
【视频】连续函数的运算
【视频】初等函数的连续性
【视频】闭区间上连续函数的性质
【文档】函数的连续性与间断点课件
【文档】连续函数的运算与初等函数的连续性课件
【文档】闭区间上连续函数的性质课件
第三周
第五讲 导数及其运算
【视频】导数的定义1
【视频】导数的定义2
【视频】导数的定义3
【视频】导数的几何意义
【视频】导数的可导性与连续性的关系
【视频】函数的和、差、积、商的求导法则
【视频】反函数的求导法则
【视频】复合函数的求导法则
【文档】导数的概念课件
【文档】函数的求导法则课件
第六讲 高阶导数、隐函数与参数方程的导数
【视频】高阶导数
【视频】隐函数的导数
【视频】由参数方程所确定的函数的导数
【文档】高阶导数课件
【文档】隐函数及由参数方程所确定的函数的导数课件
第四周
第七讲 微分的概念与微分中值定理
【视频】函数的微分
【视频】罗尔定理I
【视频】罗尔定理II
【视频】拉格朗日中值定理
【视频】柯西中值定理
【文档】函数的微分课件
【文档】微分中值定理与导数的应用课件
第八讲 洛必达法则与泰勒公式
【视频】用洛必达法则求“0/0”的未定式
【视频】用洛必达法则求“∞/∞”的未定式
【视频】用洛必达法则求其他类型的未定式
【视频】泰勒公式I
【视频】泰勒公式II
【文档】洛必达法则课件
【文档】泰勒公式课件
第五周
第九讲 函数的单调性,凹凸性,极值与最值
【视频】函数的单调性
【视频】曲线的凹凸性
【视频】函数的极值及其求法
【视频】最大值最小值问题
【文档】函数的单调性与曲线的凹凸性课件
【文档】函数的极值与最大值最小值课件
第十讲 函数图形的描绘与曲率
【视频】函数图形的描绘
【视频】曲率
【文档】函数图形的描绘课件
【文档】曲率课件
------> 1.1.1 函数与初等函数.mp4
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 62, in main
icourse163.start(args.url, config)
File "C:\Users\loli6\Desktop\course-crawler-master\mooc\icourse163.py", line 175, in start
get_resource(term_id)
File "C:\Users\loli6\Desktop\course-crawler-master\mooc\icourse163.py", line 151, in get_resource
parse_res_list(video_list, rename, parse_resource, playlist.write)
File "C:\Users\loli6\Desktop\course-crawler-master\mooc\utils.py", line 337, in parse_res_list
res.operation(*operator)
File "C:\Users\loli6\Desktop\course-crawler-master\mooc\utils.py", line 56, in operation
func(self)
File "C:\Users\loli6\Desktop\course-crawler-master\mooc\icourse163.py", line 48, in parse_resource
res_print(file_name + ext)
UnboundLocalError: local variable 'ext' referenced before assignment

这个是cmd窗口中的运行结果。 第一次使用GitHub,有描述不精确的地方,希望能够得到指导

**大学MOOC下载报错

Traceback (most recent call last):
File "D:\工作\MOOC\course-crawler-master\mooc.py", line 87, in
main()
File "D:\工作\MOOC\course-crawler-master\mooc.py", line 62, in main
icourse163.start(args.url, config)
File "D:\工作\MOOC\course-crawler-master\mooc\icourse163.py", line 175, in start
get_resource(term_id)
File "D:\工作\MOOC\course-crawler-master\mooc\icourse163.py", line 151, in get_resource
parse_res_list(video_list, rename, parse_resource, playlist.write)
File "D:\工作\MOOC\course-crawler-master\mooc\utils.py", line 337, in parse_res_list
res.operation(*operator)
File "D:\工作\MOOC\course-crawler-master\mooc\utils.py", line 56, in operation
func(self)
File "D:\工作\MOOC\course-crawler-master\mooc\icourse163.py", line 48, in parse_resource
res_print(file_name + ext)
UnboundLocalError: local variable 'ext' referenced before assignment

网站:**大学MOOC

课程地址:(请在这里填写课程地址)

问题描述:(请在这里填写问题描述)

针对现阶段某些bug的修复&新功能使用的说明

详情请参见我的文档,这里不会做太多更新了
我的分支点这里


由于Foair最近不资到去哪里了,所以最近出的某些bug本branch无法解决,我在我的branch对一些bug进行了修正,可以保证在一段时间内网易系课程(icourse163、study_mooc、study_163、open_163)和livedu的正常使用,但不会再去做很费时费力的新功能的支持(比如对付费破解功能的支持,下面对我的branch下的某些修改进行说明,方便Foair回来时候更快地对bug进行修正,并对文档中未说明部分进行额外的说明

  • 🐛 Fix Rich of study_mooc
    解决issues17

  • 🐛 Fix RichText.file of icourse163
    解决issues19&issues21

  • 🚑 Add cookies for icourse163
    解决issues20
    可解决2018/09附近及之后的视频url失效的问题,该问题来源为中M较新视频使用了新的接口,原接口无法获取真实视频url,但是新接口需要使用cookies才能获取url,所以我对icourse163增加了对cookies的支持,但考虑到大部分视频不需要新接口,所以我暂时保留了原有解析方式,只需要在要求输入cookies时候按下回车就可以注入一个空cookies,如若遇到新视频,请参照网易云课堂MOOC的cookies注入方式对中Mcookies进行注入,便可获得真正的视频url

    • 如果出现无法获取termid的情况,请尝试删除该cookies后重新下载,方法同文档中网易云课堂MOOC下删除cookies的方法
    • issues27提到把无效链接前缀改了就可以,这个之前确实没注意到,但这种方法貌似不适合批量获取(那貌似需要每个链接都建立下连接测试下的)
  • 🚀 Add livedu
    解决issues22
    对北京高校优质课程研究会进行支持

    • 依赖:BeautifulSoup4
    • 输入:仅支持课程主页url(形如:http://www.livedu.com.cn/ispace4.0/moocxjkc/toKcView.do?kcid=253 ),不支持学习页面(因为学习页面使用post,不能直接从url获取参数),如果是学习页面点一下课程名便可以返回课程主页
    • 需要cookies,获取方式同网易系课程一样
    • 由于该网站是将数据直接保存在html内的,所以,解析过程会很慢
    • 另外,issues22里也提到了,chapter_name的解析很麻烦也不靠谱,但我暂时没想到更好的方法啦……
  • 🐛 Fix re for icourse163
    解决Lee Richard's issue(Projects)
    对中M课程名内含回车课程进行支持,避免发生某些课程无法匹配的问题,典型例子:英国社会与文化 - 武汉大学,由于使用re.DOTALL会使所有.都支持回车匹配,由此引发很多问题,故仅将name处.修改为[\s\S](暂时没想出更好的方法,如有好的建议,欢迎提出)

  • 🐛 Review open_163
    解决issues24
    Review open163,并修复课程列表残缺的问题


  • 🚀 Add icourses_share
    增加对爱课程资源共享课的支持(Projects

    • 依赖:BeautifulSoup4、lxml
    • 输入:主页和学习页面都资瓷,具体支持啥看mooc.py里的正则
  • 🚀 Add open163
    增加对网易公开课的支持

    • 依赖:BeautifulSoup4、lxml、pycryptodome
  • 🚀 Some improvements
    这是在本branch已有的改动,支持了视频清晰度的选择,但文档尚未增加该项,特在这里说明下:
    参数-r shd(超高清)、hd(高清)、sd(标清)

  • 🚀 Support aria2
    增加对视频直接送入aria2下载的支持,aria2下载webui下载AriaNg下载(一个比较好看的webui)

    • 参数说明:
      • --aria2 启用 aria2 进行下载,请将 aria2c 配置在环境变量
  • 其他
    其他commit大多是fix些小bug、做点小优化,没什么可提的,可以放心使用

  • Todo List

我可爱的Foair,你快回来呀,想死你了:sob:

AttributeError: 'NoneType' object has no attribute 'find_all'

(错误简述)

网站:学堂在线

课程地址:学堂在线好几个课程都这样

问题描述:

python mooc.py http://www.xuetangx.com/courses/course-v1:TsinghuaX+30670043X+sp/about
验证成功!

传播学原理(自主模式) - 清华大学
正在获取电子书……
Traceback (most recent call last):
File "mooc.py", line 64, in
main()
File "mooc.py", line 46, in main
xuetangx.start(args.url, args.d, not args.no_pdf, cookies)
File "D:\learn\course-crawler\xuetangx.py", line 234, in start
get_content(courseware)
File "D:\learn\course-crawler\xuetangx.py", line 75, in get_content
chapters = soup.find(id='accordion').find_all(class_='chapter')
AttributeError: 'NoneType' object has no attribute 'find_all'

解析得到的**大学MOOC下载地址无效

解析得到的**大学MOOC下载地址无效

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/USTC-9002?tid=1003097001

问题描述:运行master分支代码出错:
Traceback (most recent call last): File "mooc.py", line 87, in <module> main() File "mooc.py", line 61, in main from mooc import icourse163 File "D:\Git\course-crawler\mooc\icourse163.py", line 214, in <module> get_resource(course_info[0]) NameError: name 'course_info' is not defined
按照issues19提供的意见,修改了icourse163.py文件的一行之后,程序能够顺利解析该课程的下载地址。但是我将下载地址导入到迅雷、IDM、百度云,都无法下载。可能直链解析程序需要升级了,报告此问题,烦请抽空修复。

**大学MOOC课程解析一半出错

(错误简述)

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/NUEPU-292001?tid=1002962002

问题描述:课程分析完第三周 第二讲的【富文本】个性与职业的适配性选择报错
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 62, in main
icourse163.start(args.url, config)
File "...\course-crawler\mooc\icourse163.py", line 175, in start
get_resource(course_info[0])
File "..\course-crawler\mooc\icourse163.py", line 134, in get_resource
params = {'nosKey': re.search('nosKey":"(.+?)"', text[3]).group(1),
AttributeError: 'NoneType' object has no attribute 'group

UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 9: illegal multibyte sequence

下载课程大纲时出现编码错误

网站:**大学MOOC

课程地址:https://www.icourse163.org/course/ZJU-93001?tid=1003013004

问题描述:

6.2 图的遍历(4小节共22:22)
【视频】6.2.1 图的遍历 - DFS (6:43)
python.exe : Traceback (most recent call last):
所在位置 行:1 字符: 7

  • python <<<< mooc.py https://www.icourse163.org/course/ZJU-93001?tid=1003013004 -d "L:\MOOCs"

    • CategoryInfo : NotSpecified: (Traceback (most recent call last)::String) [], RemoteException
    • FullyQualifiedErrorId : NativeCommandError

    File "mooc.py", line 87, in
    main()
    File "mooc.py", line 62, in main
    icourse163.start(args.url, config)
    File "L:\course-crawler-master\mooc\icourse163.py", line 175, in start
    get_resource(term_id)
    File "L:\course-crawler-master\mooc\icourse163.py", line 106, in get_resource
    outline.write(lesson[1], counter, 1)
    File "L:\course-crawler-master\mooc\utils.py", line 191, in write
    print('%s%s%s' % (' ' * level, Outline.res_type[sign], string))
    UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 9: illegal multibyte sequence

    【视频】6.2.2 图的遍历 - BFS (3:27)
    【视频】6.2.3 图的遍历 - 为什么需要两种遍历 (4:03)
    【视频】6.2.4 图的遍历 - 图不连通怎么办 (8:09)
    【文档】6.2 图的遍历-讲义
    【富文本】C语言代码:DFS-邻接表存储
    【富文本】C语言代码:BFS-邻接矩阵存储

我临时在utils.py的191行插入了:

string = string.encode('GBK','ignore').decode('GBk')

问题暂时解决了

下载后木有字幕

感谢老兄放出这个项目,用起来很省心。
但是在使用过程中发现,用在学堂在线的时候,并没有解析字幕的下载地址,不知道是否GITHUUB上这个版本是否是最新版本呀?

程序运行出错

win10 python3.6 运行报错

测试的给出的命令行:python mooc.py https://www.icourse163.org/course/TONGJI-53004
运行出的错就是:
(py36) E:\MOOC Python\4-course-crawler-master\course-crawler-master>python mooc.py https://www.icourse163.org/course/TONGJI-53004
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 61, in main
from mooc import icourse163
File "E:\MOOC Python\4-course-crawler-master\course-crawler-master\mooc\icourse163.py", line 7, in
CANDY = Crawler()
File "E:\MOOC Python\4-course-crawler-master\course-crawler-master\mooc\utils.py", line 211, in init
super().init()
TypeError: super() takes at least 1 argument (0 given)
看之前的有人遇到这个问题,但回答的说是python2.X的原因,但我的是python3.6也遇到了这个错误。望告知

学堂在线无法下载视频

PS E:\course-crawler-master> python mooc.py http://www.xuetangx.com/courses/course-v1:TsinghuaX+2018032801X+2018_T1/about
验证成功!
学做小程序 - 清华大学
第1讲 微信小程序概述
1.1 小程序的基本情况
小程序的基本情况
【视频】小程序的基本情况
1.2 开发小程序的准备工作
开发小程序的准备工作
【视频】开发小程序的准备工作
1.3 小程序的设计规范
小程序的设计规范
【视频】小程序的设计规范
1.4 小程序的运营规范
小程序的运营规范
【视频】小程序的运营规范
第2讲 初识微信小程序
2.1 实战项目:电影周周看V1
第一个实战项目:电影周周看V1
【视频】第一个实战项目:电影周周看V1
2.2 创建项目和目录文件结构
创建项目和目录文件结构
【视频】创建项目和目录文件结构
2.3 页面配置初探
页面配置初探
【视频】页面配置初探
2.4 view、text、image组件
view、text、image组件
【视频】view、text、image组件
2.5 快速实现基本布局
快速实现基本布局-应用弹性盒子布局
【视频】快速实现基本布局-应用弹性盒子布局
2.6 元素大小适配不同宽度屏幕
让元素大小适配不同宽度屏幕
【视频】让元素大小适配不同宽度屏幕
2.7 新增“每周推荐”weekly页
新增“每周推荐”weekly页并快速调试
【视频】新增“每周推荐”weekly页并快速调试
2.8 使用navigator组件
使用navigator组件-从about页跳转到weekly页
【视频】使用navigator组件-从about页跳转到weekly页
2.9 配置tabBar
02-09-配置tabBar-对若干一级页面的入口链接
【视频】02-09-配置tabBar-对若干一级页面的入口链接
2.10 配置全局的导航栏样式
配置全局的导航栏样式
【视频】配置全局的导航栏样式
2.11 示例代码
文本
第3讲 电影周周看V2
3.1 数据绑定
数据绑定
【视频】数据绑定
3.2 小程序运行环境与基本架构
Video
【视频】Video
3.3 条件渲染
条件渲染
【视频】条件渲染
3.4 列表渲染
列表渲染
【视频】列表渲染
3.5 使用swiper组件
使用swiper组件
【视频】使用swiper组件
3.6 页面的生命周期函数
页面的生命周期函数
【视频】页面的生命周期函数
3.7 更新数据
更新数据
【视频】更新数据
3.8 事件机制
事件机制
【视频】事件机制
3.9 示例代码
文本
第4讲 电影周周看V3
4.1 组件的自定义数据属性
组件的自定义数据属性
【视频】组件的自定义数据属性
4.2 电影详情页的基本框架
实现电影详情页的基本框架
【视频】实现电影详情页的基本框架
4.3 发起请求API
发起请求API
【视频】发起请求API
4.4 调用豆瓣API
调用豆瓣API获取电影详情数据并展示
【视频】调用豆瓣API获取电影详情数据并展示
4.5 动态设置导航栏
动态设置导航栏loading状态和标题
【视频】动态设置导航栏loading状态和标题
4.6 页面事件处理函数
页面事件处理函数与自定义页面转发
【视频】页面事件处理函数与自定义页面转发
4.7 示例代码
文本
第5讲 组件化开发
5.1 组件化开发
组件化开发
【视频】组件化开发
5.2 什么是组件
什么是组件
【视频】什么是组件
5.3 定义一个组件
定义一个组件
【视频】定义一个组件
5.4 小程序中的组件
小程序中的组件
【视频】小程序中的组件
5.5 构建和引入自定义组件
构建和引入自定义组件
【视频】构建和引入自定义组件
5.6 自定义组件的设计
自定义组件的设计
【视频】自定义组件的设计
第6讲 构建小程序的全栈应用
6.1 小程序全栈开发
小程序全栈开发
【视频】小程序全栈开发
6.2 使用Express搭建WebServer
使用Express搭建WebServer
【视频】使用Express搭建WebServer
6.3 结合腾讯云开发小程序
结合腾讯云开发小程序
【视频】结合腾讯云开发小程序
6.4 路由以及自定义中间件
路由以及自定义中间件
【视频】路由以及自定义中间件
6.5 基于REST的API设计
基于REST的API设计
【视频】基于REST的API设计
6.6 数据以及文件存储
数据以及文件存储
【视频】数据以及文件存储
6.7 wxtodo小程序的在线化改造
wxtodo小程序的在线化改造
【视频】wxtodo小程序的在线化改造
------> 1.1.1 小程序的基本情况.mp4
Traceback (most recent call last):
File "mooc.py", line 87, in
main()
File "mooc.py", line 66, in main
xuetangx.start(args.url, config, cookies)
File "E:\course-crawler-master\mooc\xuetangx.py", line 210, in start
get_content(courseware)
File "E:\course-crawler-master\mooc\xuetangx.py", line 139, in get_content
parse_res_list(video_list, rename, playlist.write, get_video)
File "E:\course-crawler-master\mooc\utils.py", line 337, in parse_res_list
res.operation(*operator)
File "E:\course-crawler-master\mooc\utils.py", line 56, in operation
func(self)
File "E:\course-crawler-master\mooc\xuetangx.py", line 53, in get_video
video_url = json.loads(res)['sources']['quality10'][0]
File "D:\Python38\lib\json_init_.py", line 357, in loads
return _default_decoder.decode(s)
File "D:\Python38\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Python38\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

好大学MOOC课程 没有视频下载地址等内容

Videos.txt、Rename.bat、Outline.txt 等文件均没有内容

网站:https://www.cnmooc.org/home/index.mooc (好大学在线CNMOOC)

课程地址:https://
www.cnmooc.org/portal/course/4687/13310.mooc

问题描述:E:\course-crawler-master\好大学>E:\course-crawler-master\好大学\mooc.py https://
www.cnmooc.org/portal/course/4687/13310.mooc
药理学 - 江苏大学
Traceback (most recent call last):
File "E:\course-crawler-master\好大学\mooc.py", line 87, in
main()
File "E:\course-crawler-master\好大学\mooc.py", line 77, in main
cnmooc.start(args.url, config, cookies)
File "E:\course-crawler-master\好大学\mooc\cnmooc.py", line 130, in start
resource = get_resource(course_nav)
File "E:\course-crawler-master\好大学\mooc\cnmooc.py", line 36, in get_resourc
e
chapters = nav.find_all(class_='view-chapter')
AttributeError: 'NoneType' object has no attribute 'find_all'

##爱课程错误

(错误简述)

网站:爱课程

课程地址:http://www.icourses.cn/sCourse/course_3220.html

问题描述:1、此课程没有找到你说明中给出的视频地址格式;
2、PDF、PPT文件是否可以下载?

(请将相关内容替换,按照格式填写 issue,方便我快速找到错误)

运行时报错

Links = open('Links.txt', 'w', encoding='utf-8')

TypeError: 'encoding' is an invalid keyword argument for this function
请问怎么少了几个文件

神也是粉丝

这里应该是总部吧?

没发现QQ交流群啥的,这么好的工具,担心哪天专门网站关闭,我谨代表四方天神、五方上帝、真主安拉、上帝宙斯、梵天、如来等古今中外各位小弟向偶像提问,这里应该是总指挥部吧?不会存在失联的情况吧?众小弟膜拜

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.