(爬)熊貓辦公-音效素材

 (爬)熊貓辦公-音效素材

難易度—<**>

網址:https://www.tukuppt.com/yinxiaomuban/zhuanchang/__zonghe_0_0_0_0_0_0_%7B%7D.html

可以看到網址進去的頁面如下
















往下拉會有很多一格格的音效,這個就是我要爬取的素材

看一下它的結構是這樣
b-box裡有很多一樣的dl


dl底下又有audio,裡頭包含了src,這個就是主要可下載的mp3檔,但因為網址
少了http:所以等下記得寫碼時要加上


這次來練習class的用法,要不然久沒用都有點生鏽
大致上整體的配發如下:
class panda_sounds(object):
    def __init__(self):
        pass

    def exPath(self):
        '''下載'''
    
    def getHtml(self):
        '''解析網址'''

在exPath()的函式裡,主要是檢查有無下載檔案存檔的絕對路徑,沒有則建立資料夾
有則繼續下載來源檔案並存檔成mp3
def exPath(selfdestpathi):
        if not os.path.exists(destpath):
            os.mkdir(destpath)
        filename=os.path.basename(i)
        with open(os.path.join(destpath, filename), 'w'as df:
            df.write(i)
            print("%s下載成功..."%filename)
            time.sleep(1)
        df.close()

在getHtml()裡,主要是利用requests請求抓取和beautifulsoup解析html裡目標的mp3網址
def getHtml(selfdestpath):
        html=requests.get(self.url)
        soup=BeautifulSoup(html.text, 'lxml')
        box=soup.find('div''b-box')
        dl=box.find_all('dl')
        for a in dl:
            audio=a.find('audio')
            source=audio.find('source')['src']
            allUrl="http:"+source
            self.exPath(destpath, allUrl)
        return allUrl

整和起來如下:
import requests
from bs4 import BeautifulSoup
import os, time

class panda_sounds(object):
    def __init__(self):
        self.url='https://www.tukuppt.com/yinxiaomuban/zhuanchang/__zonghe_0_0_0_0_0_0_%7B%7D.html'

    def exPath(selfdestpathi):
        if not os.path.exists(destpath):
            os.mkdir(destpath)
        filename=os.path.basename(i)
        with open(os.path.join(destpath, filename), 'w'as df:
            df.write(i)
            print("%s下載成功..."%filename)
            time.sleep(1)
        df.close()
    def getHtml(selfdestpath):
        html=requests.get(self.url)
        soup=BeautifulSoup(html.text, 'lxml')
        box=soup.find('div''b-box')
        dl=box.find_all('dl')
        for a in dl:
            audio=a.find('audio')
            source=audio.find('source')['src']
            allUrl="http:"+source
            self.exPath(destpath, allUrl)
        return allUrl

if __name__=='__main__':
    destpath=r'D:\暫\panda_office'
    pd=panda_sounds()
    pd.getHtml(destpath)

結果顯示:



留言

這個網誌中的熱門文章

(爬)泉洲便民資訊標題+生成云詞