Ваше завдання — зробити програму, яка шукатиме введену інформацію на сторінках в інтернеті,
посилання на які міститимуться в БД.
Чим частіше введені дані траплятимуться на сторінці, тим вище в результівному списку має розташуватися сайт. Крім цього, користувач повинен
мати зручний інтерфейс для додавання свого переліку сайтів, очищення БД та перегляду результатів пошуку.
Ответы
!!! ТРЕБА МАТИ МОДУЛЬ REQUESTS ВСТАНОВЛЕНО !!!
import requests
from bs4 import BeautifulSoup
import sqlite3
# Підключення до бази даних
conn = sqlite3.connect('sites.db')
c = conn.cursor()
# Створення таблиці для збереження сайтів
c.execute('''CREATE TABLE IF NOT EXISTS sites
(id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL);''')
# Додавання нового сайту до бази даних
def add_site():
url = input("Enter the URL of the website you want to add: ")
c.execute("INSERT INTO sites (url) VALUES (?)", (url,))
conn.commit()
print("The website has been added successfully.")
# Видалення сайту з бази даних
def remove_site():
url = input("Enter the URL of the website you want to remove: ")
c.execute("DELETE FROM sites WHERE url=?", (url,))
conn.commit()
print("The website has been removed successfully.")
# Очищення бази даних
def clear_database():
c.execute("DELETE FROM sites")
conn.commit()
print("The database has been cleared successfully.")
# Функція для отримання сторінки сайту та пошуку введеної інформації
def search_website(url, query):
# Запит до сайту та отримання HTML-коду сторінки
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
# Пошук введеної інформації на сторінці
count = soup.text.count(query)
return count
# Функція для пошуку введеної інформації на всіх сайтах з бази даних
def search_websites(query):
results = []
# Виконання запиту до бази даних, щоб отримати список сайтів
c.execute("SELECT * FROM sites")
rows = c.fetchall()
# Пошук введеної інформації на кожному сайті та збереження результатів
for row in rows:
url = row[1]
count = search_website(url, query)
results.append((url, count))
# Сортування результатів за кількістю зустрічей введеної інформації на сайті
results.sort(key=lambda x: x[1], reverse=True)
# Виведення результатів пошуку
print("Search results:")
for result in results:
print(result[0], "-", result[1])
# Основний цикл програми
while True:
print("What would you like to do?")
print("1. Add a website to the database")
print("2. Remove a website from the database")
print("3. Clear the database")
print("4. Search for information on websites")
print("5. Exit")
choice = input("Enter your choice: ")
if choice == "1":
add_site()
elif choice == "2":
remove_site()
elif choice == "3":
clear_database()
elif choice == "4":
query = input("Enter the information you want to search for: ")
search_websites(query)
elif choice == "5":
break
else:
print("Invalid choice. Please try again.")
# Закриття з'єднання з базою даних
conn.close()