Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5
EPG за Първа програма,БНТ [Отделена тема]
#1
Написах малък скрипт които сваля програмата на "Първа програма" , най -вероятно може да се направи и по добре , и е на Python3.
Код:
#!/usr/bin/python env

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
   
my_url='https://www.facebook.com/pg/pyrvaprograma/posts/'

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


containers = page_soup.findAll("div" ,{"class":"text_exposed_root"})


for container in containers:
    prg = container.p.text
    print("\n" +prg)
Отговори
#2
(10-01-2021, 20:33)zypy написа: Написах малък скрипт които сваля програмата на "Първа програма" , най -вероятно може да се направи и по добре , и е на Python3.
Код:
#!/usr/bin/python env

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
   
my_url='https://www.facebook.com/pg/pyrvaprograma/posts/'

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


containers = page_soup.findAll("div" ,{"class":"text_exposed_root"})


for container in containers:
    prg = container.p.text
    print("\n" +prg)

Промених малко кода, сега показва по добре информацията,само имам проблем с празните редове.
Код:
#!/usr/bin/python env

import bs4
import re
import sys
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
   
my_url='https://www.facebook.com/pg/pyrvaprograma/'

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

containers = page_soup.findAll("div" ,{"class":"text_exposed_root"})[0]

prg = containers.p.prettify()
pr = prg.replace('<br/>', '').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','')      #.replace('\n', '') -върши работа но променя подредбата!
print(pr)
Приемам градивни съвети!
Отговори
#3
Голяма забава!Новия ми код най накрая е готов(може би) за вкарване в приложението.
Код:
#!/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://www.facebook.com/pg/pyrvaprograma/posts'

today = date.today()
d1 = today.strftime("%d.%m.%Y")


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

containers1 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[0]
containers2 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[1]

prg = containers1.p.prettify()
pr1 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr1)

prg = containers2.p.prettify()
pr2 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr2)
Код:
zypy@localhost:~> python3 1p5.py
Неделя 28.02.2021
08:00- За къде пътувате
09:25- Мярка за неотклонение
10:50- Търся съпруг на мама
12:10- Зарево над Драва, част 1       
  13:35- Зарево над Драва, част 2 
  14:55- Баш майстора 
  16:00- Последно лято 
  17:20- Мъже 
  18:45- Кмете, кмете 
  20:05- Любимец 13 
  21:30- Куче в чекмедже 
  22:50- Гунди
Понеделник 01.03.2021
08:00- Последно лято
09:20- Мъже
10:45- Кмете, кмете
12:05- Любимец 13       
  13:30- Куче в чекмедже 
  14:50- Гунди 
  16:00- Съседката 
  17:20- Ну погоди 
  17:30- Ако можеш забрави 
  18:50- Пътят към София еп.1 
  19:50- На всеки километър с.2 еп.13 
  21:05- Сами сред вълци еп.4 
  22:30- Записки по българските въстания еп.5 
  23:20- Семейство Калинкови еп.1
Както виждате след петия ред е с един знак в страни, но за сега успях само толкова.
ПП.Никъде не открих напътствия за писане на видео аддон на Python3-Matrix,ако някой има желание да помогне с "темплейт" и малко напътствия съм готов да зашия балтон на това копче. Smile
Отговори
#4
(01-03-2021, 01:36)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://www.facebook.com/pg/pyrvaprograma/posts'

today = date.today()
d1 = today.strftime("%d.%m.%Y")


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

containers1 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[0]
containers2 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[1]

prg = containers1.p.prettify()
pr1 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr1)

prg = containers2.p.prettify()
pr2 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr2)
Код:
zypy@localhost:~> python3 1p5.py
Неделя 28.02.2021
08:00- За къде пътувате
09:25- Мярка за неотклонение
10:50- Търся съпруг на мама
12:10- Зарево над Драва, част 1      
  13:35- Зарево над Драва, част 2 
  14:55- Баш майстора 
  16:00- Последно лято 
  17:20- Мъже 
  18:45- Кмете, кмете 
  20:05- Любимец 13 
  21:30- Куче в чекмедже 
  22:50- Гунди
Понеделник 01.03.2021
08:00- Последно лято
09:20- Мъже
10:45- Кмете, кмете
12:05- Любимец 13      
  13:30- Куче в чекмедже 
  14:50- Гунди 
  16:00- Съседката 
  17:20- Ну погоди 
  17:30- Ако можеш забрави 
  18:50- Пътят към София еп.1 
  19:50- На всеки километър с.2 еп.13 
  21:05- Сами сред вълци еп.4 
  22:30- Записки по българските въстания еп.5 
  23:20- Семейство Калинкови еп.1
Както виждате след петия ред е с един знак в страни, но за сега успях само толкова.
ПП.Никъде не открих напътствия за писане на видео аддон на Python3-Matrix,ако някой има желание да помогне с "темплейт" и малко напътствия съм готов да зашия балтон на това копче. Smile

Благодаря ти за труда! Преправих малко кода ти, за да са по-подредени и съм го имплементирал в добавката за Първа програма.
Връзка с репо Mar33: 
http://martinstz.com/repo/repository.mar33-3.3.33.zip
Отговори
#5
(03-03-2021, 21:03)martinstz написа:
(01-03-2021, 01:36)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://www.facebook.com/pg/pyrvaprograma/posts'

today = date.today()
d1 = today.strftime("%d.%m.%Y")


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

containers1 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[0]
containers2 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[1]

prg = containers1.p.prettify()
pr1 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr1)

prg = containers2.p.prettify()
pr2 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr2)
Код:
zypy@localhost:~> python3 1p5.py
Неделя 28.02.2021
08:00- За къде пътувате
09:25- Мярка за неотклонение
10:50- Търся съпруг на мама
12:10- Зарево над Драва, част 1      
  13:35- Зарево над Драва, част 2 
  14:55- Баш майстора 
  16:00- Последно лято 
  17:20- Мъже 
  18:45- Кмете, кмете 
  20:05- Любимец 13 
  21:30- Куче в чекмедже 
  22:50- Гунди
Понеделник 01.03.2021
08:00- Последно лято
09:20- Мъже
10:45- Кмете, кмете
12:05- Любимец 13      
  13:30- Куче в чекмедже 
  14:50- Гунди 
  16:00- Съседката 
  17:20- Ну погоди 
  17:30- Ако можеш забрави 
  18:50- Пътят към София еп.1 
  19:50- На всеки километър с.2 еп.13 
  21:05- Сами сред вълци еп.4 
  22:30- Записки по българските въстания еп.5 
  23:20- Семейство Калинкови еп.1
Както виждате след петия ред е с един знак в страни, но за сега успях само толкова.
ПП.Никъде не открих напътствия за писане на видео аддон на Python3-Matrix,ако някой има желание да помогне с "темплейт" и малко напътствия съм готов да зашия балтон на това копче. Smile

Благодаря ти за труда! Преправих малко кода ти, за да са по-подредени и съм го имплементирал в добавката за Първа програма.

Мартине, благодаря за чудесната работа . Имам едно предложение и един бъг, линка на FHD не тръгва и май крашва приложението, като се има предвид какви са филмите аз лично бих го махнал този линк,няколко пъти съм пробвал с него качеството е по лошо от SD.Но твоя воля.
EPG- то  не се вижда след 18-19 часа защото няма място, предлагам да се махне надписа отгоре за SD FHD , ще се освободят още редове. Или нещо друго ако измислиш...
Отговори
#6
(04-03-2021, 21:04)zypy написа:
(03-03-2021, 21:03)martinstz написа:
(01-03-2021, 01:36)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://www.facebook.com/pg/pyrvaprograma/posts'

today = date.today()
d1 = today.strftime("%d.%m.%Y")


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

containers1 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[0]
containers2 = page_soup.findAll("div" ,{"class":"text_exposed_root"})[1]

prg = containers1.p.prettify()
pr1 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr1)

prg = containers2.p.prettify()
pr2 = prg.replace('<br/>', '/').replace('<span class="text_exposed_hide">', '').replace('</span>', '').replace('<span class="text_exposed_show">', '').replace('</p>','').replace('...','').replace('<p>','').replace('\t','').replace('\n','').replace('/','\n')
print(pr2)
Код:
zypy@localhost:~> python3 1p5.py
Неделя 28.02.2021
08:00- За къде пътувате
09:25- Мярка за неотклонение
10:50- Търся съпруг на мама
12:10- Зарево над Драва, част 1      
  13:35- Зарево над Драва, част 2 
  14:55- Баш майстора 
  16:00- Последно лято 
  17:20- Мъже 
  18:45- Кмете, кмете 
  20:05- Любимец 13 
  21:30- Куче в чекмедже 
  22:50- Гунди
Понеделник 01.03.2021
08:00- Последно лято
09:20- Мъже
10:45- Кмете, кмете
12:05- Любимец 13      
  13:30- Куче в чекмедже 
  14:50- Гунди 
  16:00- Съседката 
  17:20- Ну погоди 
  17:30- Ако можеш забрави 
  18:50- Пътят към София еп.1 
  19:50- На всеки километър с.2 еп.13 
  21:05- Сами сред вълци еп.4 
  22:30- Записки по българските въстания еп.5 
  23:20- Семейство Калинкови еп.1
Както виждате след петия ред е с един знак в страни, но за сега успях само толкова.
ПП.Никъде не открих напътствия за писане на видео аддон на Python3-Matrix,ако някой има желание да помогне с "темплейт" и малко напътствия съм готов да зашия балтон на това копче. Smile

Благодаря ти за труда! Преправих малко кода ти, за да са по-подредени и съм го имплементирал в добавката за Първа програма.

Мартине, благодаря за чудесната работа . Имам едно предложение и един бъг, линка на FHD не тръгва и май крашва приложението, като се има предвид какви са филмите аз лично бих го махнал този линк,няколко пъти съм пробвал с него качеството е по лошо от SD.Но твоя воля.
EPG- то  не се вижда след 18-19 часа защото няма място, предлагам да се махне надписа отгоре за SD FHD , ще се освободят още редове. Или нещо друго ако измислиш...

Ами то и аз не виждам разлика, а и няма логика да има, като си има предвид какви филми дават, между двата стрийма, та може и да махна единия. Колкото до виждането на цялата програма, пробвай следното: Kodi - Settings - Interface - Skin - Configure skin... - General - Enable auto scrooling for plot & review. като го разрешиш, там, където излиза програмата, ще почне да се скрулва и ще се види цялата.
Връзка с репо Mar33: 
http://martinstz.com/repo/repository.mar33-3.3.33.zip
Отговори
#7
Имам нужда от напътствие.Написах това:
Код:
#!/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)
Отговори
#8
(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)
Връзка с репо Mar33: 
http://martinstz.com/repo/repository.mar33-3.3.33.zip
Отговори
#9
Smile 
(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)

Хубаво е да разбера защо не се получи примен, но и така става
Отговори
#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
Отговори


Отваряне на: