Einfache Version der Site -Suche
Basierend auf Campus News Suchmaschine
- Implementierungsidee: Kriechen Sie alle Nachrichten aus dem Campus -Netzwerk, speichern Sie sie in der MySQL -Datenbank, teilen Sie die Titel in der Datenbank auf und verwandeln Sie dann die Word -Segmentierung in eine Indextabelle. Geben Sie einen Abfrageinhalt ein, segmentieren Sie den Abfrageinhalt, übereinstimmen die Wortsegmentierungsliste in der Datenbank, ordnen Sie die entsprechende URL ab und geben dann das Ergebnis zurück.
Entwicklungsumfeld
Abhängigkeitsbibliothek
- PYMYSQL: Schnittstelle zwischen Python und MySQL
- Jiebeba: Python Library für Wort Partizipe
Gesamtarchitektur
Einige Crawlers verwenden Scrapy Framework, um das Nachrichtennetzwerk der Liaoning University of Engineering und Technologie zu kriechen. Beschreibung der Hauptteile des Scrapy -Frameworks:
- Intuspider.py-Datei: Der Hauptextraktionsprozess von Webseiteninformationen unter Verwendung von verschachtelten Schleifenanrufen, wobei die Tiefen-First-Algorithmen verwendet werden, um rekursive Anrufe zu tätigen, alle HTML-Nachrichtenseiten der Liaoning University of Technology analysieren, extrahieren die erforderlichen Informationen (Titel, URL) und das Speichern des Element-Objekts. Die von Crawler verwendete Parsing -Methode ist XPath
- items.py definiert das zu krochete Objekt.
- Pipeline.py speichert die gespeicherten Objekte in der MySQL -Datenbank über die MySQL -Schnittstelle. Die anderen Dateien sind einige Konfigurationsdateien, und es gibt fast keine Änderungen, und der Ort der Änderungen wurde kommentiert. Der Crawler -Teil endet hier.
Die Gesamtidee von Suchmaschinen: Partizipieren Sie die in der Datenbank gespeicherten Titel und stellen Sie einen Keyword -Index fest. Zweitens wird basierend auf der Häufigkeit von Schlüsselwörtern eine Indextabelle mit Schlüsselwörtern und Vorkommen festgelegt. Hauptdokument Beschreibung:
- INTU.PY: Datenbanktabelle Erstellung, nehmen Sie die vom Crawler Crawled Crawled, führen Sie eine Wortsegmentierung durch und speichern Sie sie in den Vorwärts- bzw. Rückwärtstabellen.
- vorwärts.py: Vorwärts -Tabelle, Definieren Sie die Klassenkomponent
forwardIndexTableItem , Geben Sie den Array -Inhalt in der Tabelle an und in der forwardIndexTable wird das Titelpartizip in der Datenbanktabelle durchgeführt und gespeichert. - Lexikon: Wortsegmentierung, Operation definieren: Erhalten Sie seine ID durch Wörter, erhalten Sie Wörter über ID, festlegen Sie die Liste der Wortsegmentierung und laden Sie die Liste der Wortsegmentierung.
- Rückwärtsliste: Rückwärtsentelle, Verarbeitungsdaten in der Vorwärtsentelle.
- LinesEngine: Suchmaschinenklasse, führen Sie diese Datei direkt aus. Sie können den entsprechenden Titel und die URL zurückgeben, indem Sie die von Ihnen eingegebenen Wörter abfragen. Der Kern besteht darin, den Inhalt der Eingabe zu segmentieren und dann den entsprechenden Titel nach dem Schlüsselwort zu sortieren und dann die ersten 10 Zeilen entsprechend der Anzahl der Hit -Schlüsselwörter zu drucken.
Notizen und Mängel:
- Erstens ist der Crawler statisch. Wenn in der Datenbank doppelte Titel vorhanden sind, fehl dem Einfügen der Daten. Die Tabelle muss gelöscht und neu gestaltet werden.
- Der Datenbankinhalt wird bei der Suche behoben. Wenn das Schlüsselwort in der Datenbank nicht indiziert ist, wird es keine Suchergebnisse enthält.
- Die Trefferquote der Suche hängt mit der Genauigkeit des Stotternteils zusammen. Beim Kriechen ist das Layout der Webseite sehr klar, und die von mir gekrümmten Nachrichten sind nicht dupliziert.
- In Zukunft können Sie eine Webseite hinzufügen, die Website durchsuchen und eine Weboberfläche erstellen.
- Crawler und Suchanfragen sind unabhängig, und auch andere Nachrichtennetze können gekrabbelt werden, brauchen nur den Crawler -Teil.
Wie man benutzt
- Abhängigkeitsumgebung Vorbereitung: Python3 -Umgebung, Scrapy Framework, PyMysQL -Installation, JIEBA Word Library -Installation, MySQL -Installation, MySQL -Einrichtung Mytable -Datenbank und IND -Datentabelle.
- Erster Git -Klon zum angegebenen Verzeichnis
- Öffnen Sie die Konsole unter Windows, geben Sie den entsprechenden Ordner ein und geben Sie
scrapy crawl Intu ein - Warten Sie auf das Crawling -Ergebnis, und das Kriechen ist vorbei.
- Führen Sie die Datei seechengine.py aus und geben Sie den von Ihnen abfragen Sie den Textinhalt ein