某些学校的网络课程平台是学习通,学习通上面的有些课件是以图片的形式显示的,无法直接把整个课件下载下来,比如在“学生学习页面”这个页面内的课件就是这样的,非常反人类。最近,考试周,很巧的是,某课的课件就是以这样的形式放置在学习通上(陈万米牛逼)。每个课件都有很多页,如果一张一张保存下来那是要死的。于是就有了这篇博文,写个程序把这些课件都爬下来。
打开要爬的课件的页面,按F12,点击Network,然后刷新页面。可以看到类似下图的画面:
从调试窗口中可以看到浏览器发送了一堆图片的url请求,发现直接复制粘贴打开Request URL的url就可以直接从远程下载图片了。这么来看我们的爬虫程序就很简单了。需要注意的是,同一个课件内图片的url只是图片名字中的数字不同,url前面的路径是相同的,但是不同课件的整个url路径都是不同的。
根据这些信息,我们可以写出下面的程序:
import urllib import time import os from urllib import error dirName="4_3" urlPath=r"http://s3.ananas.chaoxing.com/doc/03/2f/c7/87555d318f37f4ecc6ff160f3c1b4450/thumb/" os.makedirs(dirName) for i in range(1000): pictureUrl=urlPath+str(i+1)+r".png" print(pictureUrl) nameArr=pictureUrl.split('/') nameLen=len(nameArr) name=dirName+"/"+nameArr[nameLen-1] try: require=urllib.request.Request(pictureUrl) reponse=urllib.request.urlopen(require) data=reponse.read() f = open(name,'wb') f.write(data) time.sleep(0.1) f.close() print(name+" save succeed!") except error.HTTPError as err: print('===', err.reason,err.code,err.headers) break
因为每个课件的urlPath都是不同的,故每个课件页面都需要去手动找RequestUrl,然后粘贴上来,代码这个呢dirName是每个课件的保存目录。
最后得到的结果是这样的: