Завдання Python
Створіть БД із двома полями – дата й час та температура.
Відвідайте сайт із погодою у вашому місті. Розпарсіть його
та дістаньте інформацію про температуру.
Внесіть відповідні дані до БД.
Ответы
Ответ:
бібліотеки requests, BeautifulSoup і sqlite3.
pip install requests
pip install beautifulsoup4
Далі, ми можемо написати код для створення бази даних та таблиці, яка буде містити дані про температуру:
import sqlite3
# Підключаємося до бази даних
conn = sqlite3.connect('weather.db')
# Створюємо таблицю
conn.execute('''CREATE TABLE IF NOT EXISTS temperature
(date TEXT, time TEXT, temperature REAL)''')
Після цього можна написати код, який відвідає сайт з погодою, розпарсить його та додасть інформацію про температуру до таблиці. У цьому прикладі ми використовуємо сайт з погодою для міста Київ:
import requests
from bs4 import BeautifulSoup
from datetime import datetime
# Завантажуємо сторінку з погодою
page = requests.get("https://ua.sinoptik.ua/погода-київ")
# Розбираємо HTML-код сторінки
soup = BeautifulSoup(page.content, 'html.parser')
# Знаходимо елемент, що містить інформацію про температуру
temperature = soup.find(class_='today-temp').get_text()
# Отримуємо поточну дату та час
now = datetime.now()
date = now.strftime("%Y-%m-%d")
time = now.strftime("%H:%M:%S")
# Заносимо дані про температуру до бази даних
conn.execute("INSERT INTO temperature (date, time, temperature) VALUES (?, ?, ?)", (date, time, temperature))
conn.commit()
# Закриваємо з'єднання з базою даних
conn.close()
Ответ:
Для вирішення цього завдання нам знадобляться наступні бібліотеки Python:
requests - для отримання HTML-сторінки з погодою з веб-сайту
BeautifulSoup - для парсингу HTML-сторінки та отримання інформації про температуру
sqlite3 - для створення та роботи з базою даних SQLite
Спочатку створимо базу даних SQLite та таблицю з двома полями - дата/час та температура:
python
Copy code
import sqlite3
conn = sqlite3.connect('weather.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS weather
(date_time TEXT, temperature REAL)''')
conn.commit()
conn.close()
Далі, скористаємось бібліотекою requests для отримання HTML-сторінки з погодою з веб-сайту. Наприклад, якщо ми хочемо отримати погоду у Львові з сайту "https://ua.sinoptik.ua", ми можемо використати наступний код:
python
Copy code
import requests
url = 'https://ua.sinoptik.ua/погода-львів'
response = requests.get(url)
if response.status_code == 200:
html = response.content
else:
print('Не вдалося отримати сторінку')
Після отримання HTML-сторінки ми можемо скористатись бібліотекою BeautifulSoup для парсингу сторінки та отримання інформації про температуру. Наприклад, якщо ми хочемо отримати температуру зі сторінки для сьогоднішнього дня, ми можемо використати наступний код:
python
Copy code
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
today_weather = soup.find('div', {'class': 'weatherToday'}).find('div', {'class': 'temperature'}).text
today_temperature = int(today_weather.split('°')[0])
print(f"Температура сьогодні: {today_temperature}°C")
Знайдена температура тепер може бути внесена до бази даних SQLite за допомогою наступного коду:
import datetime
import sqlite3
# Отримання температури і збереження її до бази даних
temperature = today_temperature
date_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
conn = sqlite3.connect('weather.db')
c = conn.cursor()
c.execute("INSERT INTO weather VALUES (?, ?)", (date_time, temperature))
conn.commit()
conn.close()