πŸ” Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Π½Π° сайтС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поиска Π½Π° сайтС с использованиСм Python, Π²Π°ΠΌ понадобится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тСкстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ Whoosh ΠΈΠ»ΠΈ Elasticsearch.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Whoosh:


from whoosh.index import create_in, open_dir
from whoosh.fields import Schema, TEXT
from whoosh.qparser import QueryParser

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ схСму индСкса
schema = Schema(title=TEXT(stored=True), content=TEXT)

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ индСкс
index = create_in("path_to_index", schema)   # ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с индСксом

# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доступ ΠΊ индСксу
index = open_dir("path_to_index")   # ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с индСксом

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ поисковый запрос ΠΈ Ρ€Π°ΡΠΏΠ°Ρ€ΡΡŒΡ‚Π΅ Π΅Π³ΠΎ
query = "поиск"
with index.searcher() as searcher:
    parser = QueryParser("content", schema=schema)
    q = parser.parse(query)

    # Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск ΠΏΠΎ запросу
    results = searcher.search(q)

    # Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
    for result in results:
        print(result["title"])
        print(result["content"])

Π’ΠΎ ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с использованиСм Elasticsearch:


from elasticsearch import Elasticsearch

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Elasticsearch
es = Elasticsearch()

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ индСкс, Ссли ΠΎΠ½ Π½Π΅ сущСствуСт
index_name = "my_index"
if not es.indices.exists(index_name):
    es.indices.create(index_name)

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² индСкс
doc1 = {"title": "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°", "content": "Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°"}
es.index(index=index_name, doc_type="_doc", body=doc1)

# Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ поиск ΠΏΠΎ запросу
query = {"query": {"match": {"content": "поиск"}}}
results = es.search(index=index_name, body=query)

# Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹
for hit in results["hits"]["hits"]:
    print(hit["_source"]["title"])
    print(hit["_source"]["content"])

Оба этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСкс с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠΎ запросу.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Π½Π° сайтС с использованиСм Python

Поиск Π½Π° сайтС являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, которая позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ быстро ΠΈ эффСктивно. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Π½Π° сайтС с использованиСм языка программирования Python ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

1. Π¨Π°Π³ 1: Установка ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π°ΠΌ потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Flask, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с поиском.


    pip install Flask
    

ПослС установки Flask, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² нашСм ΠΊΠΎΠ΄Π΅ для создания Π²Π΅Π±-прилоТСния.


    from flask import Flask, request, render_template
    

2. Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ HTML-страницы с поиском

Π”Π°Π»Π΅Π΅, ΠΌΡ‹ создадим HTML-страницу с Ρ„ΠΎΡ€ΠΌΠΎΠΉ поиска. Π’ этой Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова для поиска.


    @app.route('/')
    def home():
        return render_template('index.html')
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» "index.html" Π² ΠΏΠ°ΠΏΠΊΠ΅ с нашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Π½Π΅Π³ΠΎ.

<!DOCTYPE html>
    <html>
    <body>

    <form action="/search" method="POST">
        <input type="text" name="query">
        <input type="submit" value="Search">
    </form>

    </body>
    </html>
    

3. Π¨Π°Π³ 3: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° запроса поиска

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса поиска Π² нашСм Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.


@app.route('/search', methods=['POST'])
def search():
    query = request.form['query']
    # Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ для выполнСния поиска Π½Π° вашСм сайтС
    # ΠΈ получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²
    return render_template('results.html', query=query)

4. Π¨Π°Π³ 4: ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска

НаконСц, ΠΌΡ‹ создадим страницу "results.html", Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска.

<!DOCTYPE html>
    <html>
    <body>

    <h1>Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска для: {{ query }}</h1>

    <!-- Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска -->

    </body>
    </html>
    

5. Π¨Π°Π³ 5: Запуск ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ поиска Π½Π° сайтС с использованиСм Python ΠΈ Flask, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ.


    if __name__ == '__main__':
        app.run()
    

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:


    python app.py
    

ПослС запуска прилоТСния, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://localhost:5000. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ страницу с Ρ„ΠΎΡ€ΠΌΠΎΠΉ поиска. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Search". Π‘ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π½Π° страницС "results.html".

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Π½Π° сайтС с использованиСм языка программирования Python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Flask. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ поиска, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ индСксации ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСго Π²Π΅Π±-прилоТСния.

Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Поиск ΠΊΠ°ΠΊ Ρƒ Π³ΡƒΠ³Π»Π° для любого сайта

Django ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ поиск ΠΏΠΎ сайту

ПишСм Π»ΠΎΠ³ΠΈΠΊΡƒ поиска ΠΏΠΎ сайту | ДинамичСский Π²Π΅Π±-сайт

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Когда Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ self Π² Python? 🐍

πŸ”Ž 10 способов, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ синус Π² Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

πŸ“ Как Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΈΡ‚ΠΎΠ½: простыС инструкции ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

πŸ” Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Π½Π° сайтС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

πŸ”Ž Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ iter Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? 🐍

πŸ”§ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€: пошаговоС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Python? 🐍 ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ способы ΠΈ инструкции