!!! ВАЖНО !!!

1) Във връзка с превенцията на зачестилите СПАМ теми във форума, паролите на всички потребители бяха автоматично инвалидизирани на 22 Май 2024 14:20 ч.. За да възстановите своята парола (и създадете нова), моля използвайте опцията за забравена парола тук.
2) Ако акаунта ви е "баннат", без да знаете защо, вероятно от ваше име са публикувани СПАМ съобщения.
Съжаляваме за причиненото неудобство. При проблеми с възстановяването на паролата или баннати акаунти, моля пишете на kodibg в гмаил.ком или във Фейсбук страницата на КодиБГ Форум тук

Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5
EPG за Първа програма,БНТ [Отделена тема]
#10
(11-03-2021, 10:33)zypy написа:
(11-03-2021, 01:24)martinstz написа:
(10-03-2021, 21:35)zypy написа: Имам нужда от напътствие.Написах това:
Код:
#!/usr/bin/python env

import bs4
import re
import sys
from datetime import date
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url='https://bnt.bg/program'

today = date.today()
d = today.strftime("%Y%m%d")
s = 'in-tabs-descr tab tab-holder-'

uClient = uReq(my_url)
page_soup = soup(uClient.read(), "html.parser")
uClient.close()

containers = page_soup.find("div" ,{"class":s+d})
con = containers.findAll('span')

Което показва този резултат:

Код:
[<span class="hour">6:00</span>, <span class="name">Денят започва</span>, <span class="type">сутрешен блок с Христина Христова</span>, <span class="hour">9:00</span>, <span class="name">По света и у нас</span>, <span class="type"></span>, <span class="hour">9:05</span>, <span class="name">100% будни</span>, <span class="type"></span>, <span class="hour">11:00</span>, <span class="name">Култура.БГ</span>, <span class="type"></span>, <span class="hour">12:00</span>, <span class="name">По света и у нас</span>, <span class="type"></span>, <span class="hour">12:35</span>, <span class="name">Новини на турски език</span>, <span class="type"></span>, <span class="hour">12:45</span>, <span class="name">Телепазарен прозорец</span>, <span class="type"></span>, <span class="hour">13:00</span>, <span class="name">Последният печели</span>, <span class="type">забавно-познавателно семейно куиз шоу/п/</span>, <span class="hour">14:00</span>, <span class="name">Бързо, лесно, вкусно</span>, <span class="type"></span>, <span class="hour">14:30</span>, <span class="name">Телепазарен прозорец</span>, <span class="type"></span>, <span class="hour">14:45</span>, <span class="name">Румбата, аз и Роналдо</span>, <span class="type">детски филм /3 епизод/</span>, <span class="hour">15:40</span>, <span class="name">Телепазарен прозорец</span>, <span class="type"></span>, <span class="hour">16:00</span>, <span class="name">Парламентарни избори 2021: Диспут</span>, <span class="type"></span>, <span class="hour">16:45</span>, <span class="name">Светът и ние</span>, <span class="type"></span>, <span class="hour">17:00</span>, <span class="name">България в 60 минути с Мариана Векилска</span>, <span class="type"></span>, <span class="hour">18:00</span>, <span class="name">По света и у нас</span>, <span class="type"></span>, <span class="hour">18:30</span>, <span class="name">Още от деня</span>, <span class="type">коментарно предаване</span>, <span class="hour">19:00</span>, <span class="name">Последният печели</span>, <span class="type">забавно-познавателно семейно куиз шоу</span>, <span class="hour">20:00</span>, <span class="name">По света и у нас</span>, <span class="type"></span>, <span class="hour">20:30</span>, <span class="name">Парламентарни избори 2021: Гласовете на България</span>, <span class="type"></span>, <span class="hour">20:45</span>, <span class="name">Спортни новини</span>, <span class="type"></span>, <span class="hour">21:00</span>, <span class="name">Бизнес.БГ</span>, <span class="type"></span>, <span class="hour">21:30</span>, <span class="name">България от край до край 11</span>, <span class="type"></span>, <span class="hour">22:00</span>, <span class="name">Концерт на Виктория, българският представител на Евровизия 2021г.</span>, <span class="type"></span>, <span class="hour">23:00</span>, <span class="name">По света и у нас</span>, <span class="type"></span>, <span class="hour">23:30</span>, <span class="name">Събота вечер с БНТ</span>, <span class="type">/п/</span>, <span class="hour">0:30</span>, <span class="name">Светът и ние</span>, <span class="type">/п/</span>, <span class="hour">0:45</span>, <span class="name">100% будни</span>, <span class="type">/п/</span>, <span class="hour">2:40</span>, <span class="name">Култура.БГ</span>, <span class="type">/п/</span>, <span class="hour">3:40</span>, <span class="name">Бразди</span>, <span class="type">/п/</span>, <span class="hour">4:10</span>, <span class="name">Библиотеката</span>, <span class="type">/п/</span>, <span class="hour">5:10</span>, <span class="name">72-те най-сладки животни</span>, <span class="type">документална поредица</span>, <span class="hour">5:40</span>, <span class="name">Телепазарен прозорец</span>, <span class="type"></span>]

Което е добре защото ,от програмата за седмицата, показва точно деня, и са премахнати много тагове и други.Но от тук на татък опитах вичко което се сетих до сега за да изкарам текста, само грешки ми дава , след четири дена опити мисля че имам нужда от подсказване!

Вижте и погрешните ми опити-
Код:
for container in con:
    H = container.find('hour').text
    N = container.find('name').text
    T = container.find('type').text
    print(H +" "+N +" "+ T)
и това
Код:
co = con.re.compile('name">(.+?)<').findAll(data)
   for N in co:
    #тука имаше и други неща
print (N)

Най-простият начин е така:
data = str(con).replace('><' , '> <')
match = re.compile('"hour">(.+?)<.+?"name">(.+?)<.+?"type">(.+?)<').findall(data)
for hour, name, type in match:
       #и тук си ги нареждаш както си искаш, примерно:
       desc = hour.strip() + ' ' + name.strip() + ' - ' + type.strip() + ' \n'
       print (desc)

Хубаво е да разбера защо не се получи примен, но и така става

Ами тук: for container in con: - в con са всички span тагове на отделни редове и няма как да присвоиш три едновременно (то има, но става вече сложно, а идеята е да е по-простичко), тъй като цикълът обхожда ред по ред, а при co = con.re.compile('name">(.+?)<').findAll(data), трябва да ти е co = re.compile('name">(.+?)<').findAll(str(con)), но то това е почти същото, като това, което аз ти писах.
Връзка с репо Mar33: 
http://martinstz.com/repo/repository.mar33-3.3.33.zip
Отговори


Съобщения в темата
RE: Free BG TVs - от zypy - 27-02-2021, 12:49
RE: Free BG TVs - от zypy - 01-03-2021, 01:36
RE: Free BG TVs - от martinstz - 03-03-2021, 21:03
RE: Free BG TVs - от zypy - 04-03-2021, 21:04
RE: Free BG TVs - от martinstz - 05-03-2021, 00:48
RE: Free BG TVs - от zypy - 10-03-2021, 21:35
RE: Free BG TVs - от martinstz - 11-03-2021, 01:24
RE: Free BG TVs - от zypy - 11-03-2021, 10:33
RE: Free BG TVs - от martinstz - 11-03-2021, 13:02
RE: Free BG TVs - от zypy - 11-03-2021, 13:23
RE: Free BG TVs - от martinstz - 11-03-2021, 19:55

Отваряне на: