1

Тема: Парсер 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()

2

Re: Парсер top50 EuropaPlus

О і тут парсери)) я десь рік часу на них жив на веблансері)

Українська спільнота Zend Framework http://zend-frameworks.com/