实习

作者: 韩其凯 | 来源:发表于2022-03-02 11:43 被阅读0次

    入职第二天

    用爬虫爬取网站音频数据

    昨天是 入职第一天,晚上要下载数据,又玩了一会,有点累,没有写总结,今天上班的时候摸摸鱼,补上。
    
    现在小公司都不带实习生的吗,上来就让干活。。。。有个声音的项目比较紧,所以第一天的任务是给我一个网站,搜集建筑工地的各种声音。幸好之前学过一些爬虫,用爬虫技术批量下载了建筑施工的一批数据,大约有14000多条,4.5G左右。
    
    分享一下自己是如何做的:
    
    用了最原始的爬虫技术:
    
    # coding : utf-8
    import socket
    import re
    import os
    import ssl
    from urllib.request import urlopen, Request, urlretrieve
    
    socket.setdefaulttimeout(100)
    ssl._create_default_https_context = ssl._create_unverified_context
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
    
    
    def create_file(key_words):
        if os.path.isdir(key_words):
            pass
        else:
            os.mkdir(key_words)
    
    
    def getHtml(url):
        page = urlopen(url)
        html = page.read().decode('utf-8')
        return html
    
    
    def getPage(html):
        pat = '''title="Last Page">(.*?)</a></li><p class="number_of_results">'''
        page_list = re.compile(pat).findall(html)
        return int(page_list[0])
    
    
    def getVoice(html):
        x = 0
        ls = []
        pat = '''<a class="mp3_file" href="(.*?)" title="mp3 file">'''
        voicelist = re.compile(pat).findall(html)
        for voiceurl in voicelist:
            x += 1
            voiceurl = 'https://freesound.org' + voiceurl
            ls.append(voiceurl)
        return ls
    
    
    def downloadvoice(url_list, key_words, count):
        x = count
        for i in url_list:
            try:
                urlretrieve(i, key_words+'/%s.mp3' % x)
                print("音频%s下载成功" % x)
                x += 1
            except:
                print("音频%s下载失败" % x)
                x += 1
    
    
    if __name__ == '__main__':
        ls = []
        key_words = "mechanical_engine"
        create_file(key_words)
        html = getHtml('https://freesound.org/search/?q=' + key_words + '&page=1')
        page_number = getPage(html)
        print(page_number)
        for i in range(1, page_number):
            html = getHtml('https://freesound.org/search/?q=' + key_words + '&page=' + str(i))
            #page_number = getPage(html)
            #ls = getVoice(html, page_number)
            ls = getVoice(html)
            #print(ls)
            downloadvoice(ls, key_words, i * 15)
    
    

    昨天用自己电脑跑了一夜,发现有重复的。。。无语,自己太菜了。

    今天只能整改了。

    相关文章

      网友评论

          本文标题:实习

          本文链接:https://www.haomeiwen.com/subject/lgvsrrtx.html