CCCPaste

PGE_Dystr_wylaczenia

from playwright.sync_api import Playwright, sync_playwright, expect
from bs4 import BeautifulSoup
import pandas as pd

"""
Odziały:
1. Lublin:		"849"
2. Łódź:		"2947"
3. Rzeszów:	"852"
4. Białystok:		"848"
5. Skarżysko-Kamienna:	"853"
6. Warszawa:	"854"
7. Zamość:		"855"

"""

MIASTO = "Milanówek"      # <---- nazwa miejscowości
REJON = "Pruszków"		 # <--- wpisać Rejon
ODDZIAL = "854" 			 # <--- wpisać Oddział

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    # Open new page
    page = context.new_page()
    # Go to https://pgedystrybucja.pl/planowane-wylaczenia
    page.goto("https://pgedystrybucja.pl/planowane-wylaczenia")
    # Select 854
    page.locator("text=Oddział * --wybierz oddział-- PGE Dystrybucja S.A. Oddział Białystok PGE Dystryb >> select").select_option(ODDZIAL)       
    # Select Pruszków
    page.locator("text=Rejon Energetyczny* --wybierz rejon--Rejon Energetyczny Konstancin JeziornaRejon >> select").select_option(REJON)   
    # Click text=Pokaż
    page.locator("text=Pokaż").click()
    # ---------------------

    html = page.inner_html('xpath=/html/body/div[3]/div[2]/div[1]/div[4]/div[4]/div/div/div/table')
    soup = BeautifulSoup(html, 'html.parser')
    
    tabela = soup.find('tbody')
    rows = len(tabela.find_all('tr'))
      
    lista = []
    for n in range(0,rows):
        slownik = {}      
        row = tabela.find_all('tr')[n]
        if row.td.attrs != {'colspan': '6'}:
            all_td =  row.find_all('td')
            slownik = {
                'miasto': all_td[0].find('span', attrs={'class': 'pull-left'}).text.strip(),
                'ulica': all_td[0].find('ul').text.replace('\n', ''),
                'data_roz': all_td[1].text,
                'data_zak': all_td[2].text,
                'godziny': all_td[3].text,
                # 'stacja': all_td[4].text.replace('\n', '')
        }
            lista.append(slownik)
         
    df = pd.DataFrame(lista)
    # print(df)
    
    new_df = df[ df['miasto'] == MIASTO ]
    # print(new_df)
    
    pocz = new_df.iloc[0,2].split()[0]
    pocz_h = new_df.iloc[0,2].split()[1]
    kon = new_df.iloc[0,3].split()[0]
    kon_h = new_df.iloc[0,3].split()[1]
    h = new_df.iloc[0,4]
    print('\n\n')
    print("W dniach od {} do {}, w godzinach {}-{} ({} godzin), w {} - planowane wyłaczenie.".format(pocz,kon,pocz_h, kon_h, h, MIASTO))
    
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)