Versão simples da pesquisa de site
Baseado no mecanismo de busca de notícias do campus
- Idéia de implementação: rasteje todas as notícias da rede do campus, armazene -as no banco de dados MySQL e divida os títulos no banco de dados e transforme as palavras que a segmentação resulta em uma tabela de índice. Digite um conteúdo de consulta, segmento O conteúdo da consulta, corresponda à lista de segmentação do Word no banco de dados, mapeie o URL correspondente e retorne o resultado.
Ambiente de Desenvolvimento
Biblioteca de dependência
- pymysql: interface entre python e mysql
- Jieba: Biblioteca Python para particípio de palavra
Arquitetura geral
Alguns rastreadores usam a estrutura de scrapy para rastrear a rede de notícias da Universidade de Ligação de Engenharia e Tecnologia. Descrição das partes principais da estrutura de scrapy:
- Intuspider.py Arquivo: O principal processo de extração das informações da página da web, usando chamadas de loop aninhadas, usando algoritmos de profundidade para fazer chamadas recursivas, analisando todas as páginas de notícias HTML do Liaoning University of Technology, extraindo as informações necessárias (título) e salvando o objeto de itens. O método de análise usado por rastreadores é xpath
- items.py define o objeto a ser rastreado.
- O Pipeline.py armazena os objetos salvos no banco de dados MySQL através da interface MySQL. Os outros arquivos são alguns arquivos de configuração e quase não há alterações, e a localização das alterações foi comentada. A parte do rastreador termina aqui.
A idéia geral dos mecanismos de pesquisa: particípio dos títulos armazenados no banco de dados e estabelecem um índice de palavras -chave. Em segundo lugar, com base na frequência das palavras -chave, é estabelecida uma tabela de palavras -chave e ocorrências de índice. Descrição do documento principal:
- Intu.py: Construção da tabela de banco de dados, pegue os dados rastejados pelo rastreador, execute a segmentação de palavras e armazene -os nas tabelas para frente e para trás, respectivamente.
- Forward.Py: Tabela Forward, Defina o componente da classe
forwardIndexTableItem , especifique o conteúdo da matriz na tabela e, na classe Forward Table forwardIndexTable , o particípio do título é executado e armazenado na tabela de banco de dados. - Léxico: segmentação de palavras, defina operação: obtenha seu ID através de palavras, obtenha palavras através do ID, estabeleça a lista de segmentação de palavras e carregue a lista de segmentação de palavras;
- Lista de atraso: Tabela de atraso, processamento de dados na tabela para a frente.
- LinesEngine: Pesquise aula do mecanismo, execute este arquivo diretamente, você pode retornar o título e o URL correspondentes, consultando as palavras que você inseriu. O núcleo é segmentar o conteúdo de entrada e, em seguida, classificar o título correspondente de acordo com a palavra -chave e imprimir as 10 primeiras linhas de acordo com o número de palavras -chave de hit.
Notas e deficiências:
- Primeiro, o rastreador é estático. Se houver títulos duplicados no banco de dados, a inserção dos dados falhará. A tabela precisa ser limpa e recarregada.
- O conteúdo do banco de dados é corrigido.
- A taxa de acerto da pesquisa está relacionada à precisão do particípio da gancho. Quando o rastreamento, o layout da página da web é muito claro e as notícias que eu rastejei não são duplicadas.
- No futuro, você pode adicionar uma página da web, pesquisar no site e criar uma interface da web.
- Rastreadores e pesquisas são independentes, e outras redes de notícias também podem ser rastreadas, apenas precisam da parte do rastreador.
Como usar
- Preparação do ambiente de dependência: ambiente Python3, estrutura de scrapy, instalação do PymySQL, instalação da biblioteca de palavras JIEBA, instalação do MySQL, banco de dados MyTable MySQL estabelecimento e tabela de dados INTU.
- Primeiro clone git para o diretório especificado
- Abra o console sob o Windows, insira a pasta correspondente e digite
scrapy crawl Intu - Aguarde o resultado rastreador, e o rastreamento acabou.
- Execute o arquivo seachengine.py e insira o conteúdo de texto que você consulta