Помогите спарсить страницу https://www.rosseti-sib.ru/otkluchenie-energii/
selenium установил, запустил но в коде странице того что мне надо нет. Как быть.
Может можно как то без selenium.
Scorp1978что нужно получить?
но в коде странице того что мне надо нет
Scorp1978
таблицу списка отключений
import requests from bs4 import BeautifulSoup # Define the target URL url = "https://www.rosseti-sib.ru/otkluchenie-energii/" # Fetch the HTML content try: response = requests.get(url) response.raise_for_status() # Raise an error for non-200 status codes except requests.exceptions.RequestException as e: print(f"Error fetching URL: {e}") exit() # Parse the HTML content soup = BeautifulSoup(response.content, 'html.parser') # Extract relevant data using more specific selectors and logic # (replace these with selectors based on the website's structure) table_data = [] for row in soup.find_all('tr')[1:]: # Skip the header row date_cell = row.find('td', class_='date') # Assuming a class 'date' if date_cell: date = date_cell.text.strip() time_cell = row.find('td', class_='time') # Assuming a class 'time' if time_cell: time = time_cell.text.strip() region_cell = row.find('td', class_='region') # Assuming a class 'region' if region_cell: region = region_cell.text.strip() # Similarly, extract other data based on their selectors and logic table_data.append((date, time, region, ...)) # Add extracted data to list # Print or use the table data as needed print(table_data)
import pandas as pd import requests import sqlite3 import tkinter as tk from tkinter import ttk data_url = 'https://www.rosseti-sib.ru/local/templates/rosseti/components/is/proxy/shutdown_schedule_table/data.php' region_url = 'https://www.rosseti-sib.ru/local/templates/rosseti/components/is/proxy/shutdown_schedule_table/regions.php' session = requests.session() r = session.get(data_url) if r.ok: data = r.json() r = session.get(region_url) if r.ok: regions = r.json() data_table = pd.DataFrame(data) reg_table = pd.DataFrame(regions) conn = sqlite3.connect('energy_disable.db') data_table.to_sql('data', conn, index=False, if_exists='replace') reg_table.to_sql('regions', conn, index=False, if_exists='replace') conn.close() class FilterApp: def __init__(self, root): self.root = root self.root.title("SQLite Table Filter") self.conn = sqlite3.connect('energy_disable.db') self.cursor = self.conn.cursor() # Создаем и настраиваем виджеты интерфейса self.create_widgets() def create_widgets(self): self.filter_label = tk.Label(self.root, text="Filter by City:") self.filter_label.pack(pady=10) self.filter_entry = tk.Entry(self.root) self.filter_entry.pack(pady=10) self.filter_button = tk.Button(self.root, text="Apply Filter", command=self.apply_filter) self.filter_button.pack(pady=10) # Получаем заголовки из метаданных таблицы self.cursor.execute("PRAGMA table_info(data)") columns_info = self.cursor.fetchall() column_names = [info[1] for info in columns_info] print(column_names) self.tree = ttk.Treeview(self.root, show='headings', columns=column_names) self.v_scrollbar = ttk.Scrollbar(root, orient="vertical", command=self.tree.yview) self.v_scrollbar.pack(side=tk.RIGHT, fill=tk.Y) self.tree.configure(yscrollcommand=self.v_scrollbar.set) # Создаем горизонтальный скроллбар и привязываем его к Treeview self.h_scrollbar = ttk.Scrollbar(root, orient="horizontal", command=self.tree.xview) self.h_scrollbar.pack(side=tk.BOTTOM, fill=tk.X) self.tree.configure(xscrollcommand=self.h_scrollbar.set) for col in column_names: self.tree.heading(col, text=col) self.tree.pack() self.apply_filter() def apply_filter(self): # Очищаем Treeview for item in self.tree.get_children(): self.tree.delete(item) # Получаем значение из Entry filter_value = self.filter_entry.get() # Выполняем запрос с учетом фильтра query = f"SELECT * FROM data WHERE gorod LIKE '%{filter_value}%'" self.cursor.execute(query) # Получаем результаты запроса rows = self.cursor.fetchall() # Вставляем результаты в Treeview for row in rows: self.tree.insert('', 'end', values=row) if __name__ == "__main__": root = tk.Tk() app = FilterApp(root) root.mainloop()