Тема: Парсер top50 EuropaPlus
Останнім часом почав використовувати Python для збирання отримання різноманітної інформації з інтернету. Привожу приклад парсеру топ50 з сайту europaplus.ua
#!/usr/bin/python
#date: Jun 9, 2012
import urllib2
import re
import os
def load_track(info):
#print info['url']
path = 'music'
try:
os.mkdir(path)
except OSError:
pass
response = urllib2.urlopen(info['url'])
data = response.read()
f = open(path + '/' + re.sub(r'[^-a-zA-Zа-яА-Я0-9_.() ]?', '', info['index'] + ' ' + info['author'] + ' - ' + info['title'] + '.mp3'), 'w')
f.write(data)
def parse():
# get data
host = 'http://europaplus.ua/'
page = '/ru/tophits/index.html'
url = host + page
response = urllib2.urlopen(url)
html = response.read()
# parse data
expression = r'<td width="250"><b>(.*)</b></td>\s*'
expression += r'<td>(.*)</td>\s*'
expression += r'<td width="60" align="center">\s*'
expression += r'<div class="sound_player_button_play sound_player_button_play\d*">\s*'
expression += r'<img src="/styles/front/image/btn\.play\.gif"\s*'
expression += r'index="(\d*)"\s*'
expression += r'source="/(.*)"\s*'
expression += r'width="29" height="21" class="hand" />\s*'
expression += r'</div>'
matches = re.findall(expression, html, re.MULTILINE)
if matches:
for match in matches:
info = {'author' : match[0], 'title' : match[1], 'index' : match[2], 'url' : host + match[3]}
load_track(info)
def main():
parse()
if __name__ == '__main__':
main()