送给Python小白学习爬虫的小项目

原标题:运用Python爬虫下载熊猫办公上面的视频模板和音效

1.怎样实现

1.1 需要的模块

requests(urllib亦可)、bs4、os、time、sys
前两个模块都需要额外安装,后面模块是Python自带的,我们按住win+R,在弹出来的窗口中输入cmd,来到命令窗口,输入下面语句即可安装
requests: pip install requests
bs4:pip install bs4
如果在运行小编的代码的时候出现如下报错
在这里插入图片描述
建议安装lxml :pip install lxml,就不会出现错误了。

1.2 实现

我们来到这个网址:
https://www.tukuppt.com/videomuban/xuexi.html
这就是视频模板的界面,我输入的是有关 学习 类型的视频模板,这个网址其实有两部分组成的,第一就是模板类型,在这个网址中是 videomuban,另一部分是 xuexi 在这里是这个模板下面的类型。
在这里插入图片描述
我们要做的就是下载这个网址下面的视频,通过按电脑键盘F12来到开发者工具,可以发现这些视频下载链接都在这个div.b-box标签下面:
在这里插入图片描述
我们只需得到这个标签下面的内容即可。
代码实现:

def get_video(name):
    url='https://www.tukuppt.com/videomuban/%s.html'%name
    responce=requests.get(url=url)
    soup=BeautifulSoup(responce.text,'lxml')
    list1=soup.select('div.b-box>dl')    # 列表
    list2=[]    # 用于存储视频链接的列表
    list3=[]

    for i in range(len(list1)):
        str1='http:'+list1[i].select('dd>a>video')[0]['src']   # 一个视频的下载链接
        list2.append(str1)
        str2=list1[i].select('dt.title')[0].get_text()   # 视频的名称
        list3.append(str2)
        print('->【{}】----{}'.format(i+1,str2))

    str_id=input('------>请输入你想下载的视频序号(可输入一连串序号,中将用","隔开):')
    id=[int(i) for i in str_id.split(',')]

    for i in id:
        cb=requests.get(url=list2[i-1]).content    # 用来得到视频的二进制文件 c content b 二进制
        with open(file='./{}/{}.mp4'.format(name,list3[i-1]),mode='wb') as f:
            f.write(cb)
        Time_1()
        print('--->一下载{}.mp4完毕!'.format(list3[i - 1]))

这是一个自定义的方法,传入的参数就是自己输入的名称,在这里就是上面 输入的 xuexi(学习)
,这里面有一个Time_1()方法,是用来显示进度条的。
Time_1()方法:

def Time_1():     # 进度条函数
    for i in range(1,101):
        sys.stdout.write('\r')
        sys.stdout.write('{0}%|{1}{2}'.format(i,int((i%101)/2)*'-','>'))
        sys.stdout.flush()
        time.sleep(0.05)
    sys.stdout.write('\n')

下载音效吗?跟上面的过程一样,我就不详细讲了,
实现代码:

def get_yin(name1):

    url='https://www.tukuppt.com/yinxiaomuban/%s.shtml'%name1
    responce=requests.get(url=url).text
    soup=BeautifulSoup(responce,'lxml')
    list1=soup.select('div.b-box>dl')
    list2=[]
    list3=[]

    for i in range(len(list1)):
        url='http:'+list1[i].select('audio>source')[0]['src']   # 音频下载链接
        name=list1[i].select('dt>a')[0].get_text()
        list2.append(url)
        list3.append(name)
        print('--->【{}】-{}'.format(i+1,name))

    str_id = input('------>请输入你想下载的视频序号(可输入一连串序号,中将用","隔开):')
    id = [int(i) for i in str_id.split(',')]

    for i in id:
        cb = requests.get(url=list2[i - 1]).content  # 用来得到视频的二进制文件 c content b 二进制
        with open(file='./{}/{}.mp3'.format(name1,list3[i - 1]), mode='wb') as f:
            f.write(cb)
        Time_1()
        print('--->一下载{}.mp3完毕!'.format(list3[i - 1]))

另外,在这个了我还定义了一个方法,主要用来创建文件的

def get_name():
    name=input('请输入你想下载模板的名称(拼音):')
    try:
        os.mkdir('./{}'.format(name))
    except:
        sys.exit()    # 如果程序出错,直接退出程序
    return name

不过这里输入的要是拼音,切记!

2.最终代码

完整我已经上传到github,l链接为:ppt.py
运行结果:
在这里插入图片描述
在这里插入图片描述
下载完成之后,会在同一个文件夹下面多出文件夹,所下载的内容就在这个文件夹下面,
如:
在这里插入图片描述
在这里插入图片描述

3.总结

这个项目比较简单,希望那些python小白们能看懂,如果觉得可以,记得给我点一个小小的赞,我会更加努力地推出新的博文的。

原创文章 62 获赞 484 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_45404396/article/details/105473493