爬取学习通的图片课件

    某些学校的网络课程平台是学习通,学习通上面的有些课件是以图片的形式显示的,无法直接把整个课件下载下来,比如在“学生学习页面”这个页面内的课件就是这样的,非常反人类。最近,考试周,很巧的是,某课的课件就是以这样的形式放置在学习通上(陈万米牛逼)。每个课件都有很多页,如果一张一张保存下来那是要死的。于是就有了这篇博文,写个程序把这些课件都爬下来。

    打开要爬的课件的页面,按F12,点击Network,然后刷新页面。可以看到类似下图的画面:

p1.png

    从调试窗口中可以看到浏览器发送了一堆图片的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是每个课件的保存目录。

    最后得到的结果是这样的:

100.png

1000.png


下一篇:

首页 所有文章 机器人 计算机视觉 自然语言处理 机器学习 编程随笔 关于