Приступим к программной реализации. В предыдущих скриптах я уже получал 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 и смотрим разметочку... Замечаем, что каждый фильм "упакован" следующим образом:
Функция получения ленты анекдотов:
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 и смотрим разметочку... Замечаем, что каждый фильм "упакован" следующим образом:
| |||||||||||||||||||||||||
Само-собой разумеется, данный класс тоже находится в куче тэгов. Поэтому берем библиотеку 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 Всё, получение информации сделано. Осталось написать мониторинг мыла и функцию обратной отправки, сделаю это в следующий раз.
|
Комментариев нет:
Отправить комментарий