понедельник, 11 июня 2012 г.

Новости на мобильник или управление с e-mail. Часть вторая.

Приступим к программной реализации. В предыдущих скриптах я уже получал RSS -ленту bash.im и погоды.  Анекдоты и новости я также получу через RSS-ленту, осталось только написать для всех этих грабберов функции возврата одной цитаты, погоды на один день, получение одного анекдота и новости соответственно. Все эти функции по-сути представляют одно и тоже, различаются лишь в парсинге HTML-тэгов, поэтому приведу лишь реализацию функций получения ленты анекдотов и получение одного анекдота.

Функция получения ленты анекдотов:
 def getRSSAnekdot(nameURL):
    d=feedparser.parse(nameURL)
    s=''
    for e in d.entries:
        s+=e.description+'\n'
    return s

Получим один анекдот:
def getRandomAnekdot():
    anekdots=getRSSAnekdot('http://www.anekdot.ru/rss/export_j.xml')
    j=random.randint(0, 9)
    k=0
    s=''
    for i in anekdots.split('\n'):
       if j==k:
          if i=='': j+=1
          else:
               s=i
               break
       k+=1        
    if '<br />' in s: s=s.replace('<br />', '')
    return s

Теперь приступим к самому интересному - получению фильмов с сайта кинотеатра. Открываем страницу http://www.cinemapark.ru/multiplexes/show/8 и смотрим разметочку... Замечаем, что каждый фильм "упакован" следующим образом:
<div class="msch_group_title">

<a href="/films/detail/13204#8">Люди в чёрном 3 IMAX 3D (приключения/фантастика, 1 ч. 46 мин.)</a>

</div>
Само-собой разумеется, данный класс тоже находится в куче тэгов. Поэтому берем библиотеку BeautifulSoup и вытаскиваем класс, затем парсим то, что находится внутри него, вытаскивая только название и вид (2d, 3d, IMAX) фильма:



def getFilms():
    doc=getHTML()
    soup = BeautifulSoup(doc)
    x=[]
    for film in soup.findAll(True, 'msch_group_title'):
         ans=''
         s=str(film).replace('<div class="msch_group_title">', '')
         s=s.replace('</a>\n</div>','')
         k=0
         for i in s:
            if i=='(': k=0
            if k!=0: ans+=i
            if i=='>': k=1  
         x.append(ans[0:-1])
    s=''
    for i in set(x):
       s+=str(i)+';'
    return s                      Всё, получение информации сделано. Осталось написать мониторинг мыла и функцию обратной отправки, сделаю это в следующий раз.


Комментариев нет:

Отправить комментарий