优秀的编程知识分享平台

网站首页 > 技术文章 正文

跑路了|爬了慕课网1300多节课(慕课崩了)

nanyue 2024-08-25 10:14:02 技术文章 6 ℃

大家好,我是程序员渔夫。

最近在家待业,一边捣鼓下自媒体,一边准备看下教学视频,捡捡开发的相关的东西,为春招做点准备。

我寻思着看些设计模式相关的课程,思来想去之前听过韩天峰大神的课,讲的很精辟,细致,准备再刷一遍,结果我在慕课网上一番搜索之后,找到了这门课,我记得韩大神讲过2门课呀,但是这里搜索出来,死活只有一门课。

“难道是我记错了?“我有点怀疑自己记错了,我于是翻找我在慕课网上的学习记录,果然找到那门课,原来是这门课被官方设置下线了,所以就搜索不到了。

因此就想说“到底有哪些课被官方下架了?“,在萌生了这个想法之后,就立即想到写个爬虫来一探究竟,用事实说话。

立即开干。

第一步,先观察这些课程的链接都是以下格式:

https://www.imooc.com/learn/438

课程id就是逐一自增而已。

第二步,提取出需要的内容字段,课程ID,课程作者,课程状态,课程名称等四个字段。

第三步,就是看页面上有没有API接口,是课程内容的json,如果有,那就比较简单,直接提取出来,如果没有,那就只能是用正则或者bs。

最后附上Python源码,其他语言也是差不多思路。

import requests,urllib3,re
urllib3.disable_warnings()
for i in range(0,10):
    url = 'https://www.imooc.com/learn/'+str(i)
    response = requests.get(url,verify=False)
    if response.status_code == 200:
        content = response.text
        data = re.compile(r'class="l">(.*?)<\/h2').findall(content)
        author = re.compile(r"'Teacher': '(.*?)'").findall(content)
        type = re.compile(r'href="\/course\/list">(.*?)<\/a>').findall(content)
        if data:
            print(url,'-',data[0],'-',author[0],'-',type[0])



我已经跑完所有课程,大概1300多节这样,所幸没有被风控,为了不对官方造成影响,所以代码里面设置只循环10次,大家根据自己的需求可以修改,建议操作不要太频繁,或者可以一次循环200次这样,不要对官方服务器产生影响。

下图是爬取的示例结果:

另外我已经把脚本同步到了 代码共享平台 上,需要的小伙伴可以自取。

Tags:

最近发表
标签列表