入职第二天
用爬虫爬取网站音频数据
昨天是 入职第一天,晚上要下载数据,又玩了一会,有点累,没有写总结,今天上班的时候摸摸鱼,补上。
现在小公司都不带实习生的吗,上来就让干活。。。。有个声音的项目比较紧,所以第一天的任务是给我一个网站,搜集建筑工地的各种声音。幸好之前学过一些爬虫,用爬虫技术批量下载了建筑施工的一批数据,大约有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)
昨天用自己电脑跑了一夜,发现有重复的。。。无语,自己太菜了。
今天只能整改了。
网友评论