Ваше завдання — зробити програму, яка шукатиме введену інформацію на сторінках в інтернеті,
посилання на які міститимуться в БД.
Чим частіше введені дані траплятимуться на сторінці, тим вище в результівному списку має розташуватися сайт. Крім цього, користувач повинен
мати зручний інтерфейс для додавання свого переліку сайтів, очищення БД та перегляду результатів пошуку.
Answers & Comments
!!! ТРЕБА МАТИ МОДУЛЬ 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()