Предмет: Информатика, автор: marina7926

Ваше завдання — зробити програму, яка шукатиме введену інформацію на сторінках в інтернеті,
посилання на які міститимуться в БД.
Чим частіше введені дані траплятимуться на сторінці, тим вище в результівному списку має розташуватися сайт. Крім цього, користувач повинен
мати зручний інтерфейс для додавання свого переліку сайтів, очищення БД та перегляду результатів пошуку.

Ответы

Автор ответа: mixail0809
0

!!! ТРЕБА МАТИ МОДУЛЬ 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()

Похожие вопросы
Предмет: Алгебра, автор: porpik