Предмет: Информатика,
автор: maridi30
Ваша задача — сделать программу, которая будет искать введенную информацию на страницах
в интернете, а ссылки на них будут содержаться
в БД.
Чем чаще введенные данные будут попадаться
на странице, тем выше в результирующем списке
должен расположиться сайт. Кроме этого, пользователь должен иметь удобный интерфейс для
добавления своего списка сайтов, очистки БД и
просмотра результатов поиска.
Сделать код нужно без использования библиотеки os, db_path, fetchall, html parser
Используй db navigator
ПОМОГИТЕ КТО НИБУДЬ ПОЖАЛУЙСТА ДАМ 100 БАЛЛОВ!!!
Ответы
Автор ответа:
0
Для решения данной задачи можно использовать библиотеку requests для получения HTML-кода страниц, а затем использовать регулярные выражения для поиска введенной информации. При этом данные можно хранить в базе данных SQLite с помощью библиотеки sqlite3.
Примерный алгоритм работы программы:
1. Создание базы данных и таблицы для хранения URL-адресов страниц и количества вхождений введенной информации на каждой из них.
2. Добавление ссылок на страницы в базу данных через интерфейс программы.
3. Получение HTML-кода страниц с помощью библиотеки requests и поиск введенной информации на каждой из них.
4. Обновление количества вхождений информации для каждой страницы в базе данных.
5. Вывод результатов поиска пользователю в порядке убывания количества вхождений информации на странице.
6. Возможность очистки базы данных и добавления новых ссылок на страницы через интерфейс программы.
Для создания интерфейса можно использовать фреймворк Flask. В качестве шаблонизатора можно использовать Jinja2. Для работы с базой данных можно использовать библиотеку SQLAlchemy.
Примерный код программы:
```python
import re
import sqlite3
import requests
from flask import Flask, request, render_template
app = Flask(__name__)
# Создание базы данных и таблицы
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS pages
(id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL,
count INTEGER NOT NULL DEFAULT 0)''')
conn.commit()
# Добавление страницы в базу данных
def add_page(url):
cursor.execute('INSERT INTO pages(url) VALUES (?)', (url,))
conn.commit()
# Получение страницы и поиск информации
def search_page(url, query):
response = requests.get(url)
if response.status_code == 200:
content = response.text
count = len(re.findall(query, content))
cursor.execute('UPDATE pages SET count=? WHERE url=?', (count, url))
conn.commit()
# Получение результатов поиска
def get_results(query):
cursor.execute('SELECT url, count FROM pages WHERE url LIKE ?', ('%' + query + '%',))
results = cursor.fetchall()
return sorted(results, key=lambda x: x[1], reverse=True)
# Обработчики запросов
@app.route('/')
def index():
return render_template('index.html')
@app.route('/add', methods=['POST'])
def add():
url = request.form['url']
add_page(url)
return 'OK'
@app.route('/search', methods=['POST'])
def search():
query = request.form['query']
cursor.execute('SELECT * FROM pages')
pages = cursor.fetchall()
for page in pages:
search_page(page[1], query)
results = get_results(query)
return render_template('results.html', results=results)
@app.route('/clear')
def clear():
cursor.execute('DELETE FROM pages')
conn.commit()
return 'OK'
if __name__ == '__main__':
app.run(debug=True)
```
Возможности программы:
- Добавление страниц в базу данных через интерфейс.
- Поиск введенной информации на всех страницах в базе данных.
- Вывод результатов поиска с указанием количества вхождений информации на каждой странице в порядке убывания.
Примерный алгоритм работы программы:
1. Создание базы данных и таблицы для хранения URL-адресов страниц и количества вхождений введенной информации на каждой из них.
2. Добавление ссылок на страницы в базу данных через интерфейс программы.
3. Получение HTML-кода страниц с помощью библиотеки requests и поиск введенной информации на каждой из них.
4. Обновление количества вхождений информации для каждой страницы в базе данных.
5. Вывод результатов поиска пользователю в порядке убывания количества вхождений информации на странице.
6. Возможность очистки базы данных и добавления новых ссылок на страницы через интерфейс программы.
Для создания интерфейса можно использовать фреймворк Flask. В качестве шаблонизатора можно использовать Jinja2. Для работы с базой данных можно использовать библиотеку SQLAlchemy.
Примерный код программы:
```python
import re
import sqlite3
import requests
from flask import Flask, request, render_template
app = Flask(__name__)
# Создание базы данных и таблицы
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS pages
(id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL,
count INTEGER NOT NULL DEFAULT 0)''')
conn.commit()
# Добавление страницы в базу данных
def add_page(url):
cursor.execute('INSERT INTO pages(url) VALUES (?)', (url,))
conn.commit()
# Получение страницы и поиск информации
def search_page(url, query):
response = requests.get(url)
if response.status_code == 200:
content = response.text
count = len(re.findall(query, content))
cursor.execute('UPDATE pages SET count=? WHERE url=?', (count, url))
conn.commit()
# Получение результатов поиска
def get_results(query):
cursor.execute('SELECT url, count FROM pages WHERE url LIKE ?', ('%' + query + '%',))
results = cursor.fetchall()
return sorted(results, key=lambda x: x[1], reverse=True)
# Обработчики запросов
@app.route('/')
def index():
return render_template('index.html')
@app.route('/add', methods=['POST'])
def add():
url = request.form['url']
add_page(url)
return 'OK'
@app.route('/search', methods=['POST'])
def search():
query = request.form['query']
cursor.execute('SELECT * FROM pages')
pages = cursor.fetchall()
for page in pages:
search_page(page[1], query)
results = get_results(query)
return render_template('results.html', results=results)
@app.route('/clear')
def clear():
cursor.execute('DELETE FROM pages')
conn.commit()
return 'OK'
if __name__ == '__main__':
app.run(debug=True)
```
Возможности программы:
- Добавление страниц в базу данных через интерфейс.
- Поиск введенной информации на всех страницах в базе данных.
- Вывод результатов поиска с указанием количества вхождений информации на каждой странице в порядке убывания.
Похожие вопросы
Предмет: Английский язык,
автор: belaevamelania91
Предмет: Алгебра,
автор: swqtof
Предмет: Алгебра,
автор: milki62326
Предмет: Геометрия,
автор: maksyda
Предмет: Геометрия,
автор: miskocecoleksandra