Python实现简单的索引排序与搜索功能

 更新时间:2021年04月14日 10:36:00   作者:Mr.Pan_学狂  
这篇文章主要介绍了Python实现简单的索引排序与搜索功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

今天,我上的课,学了索引排序与搜索。让我们用Python实现,觉得有点意思就跟大家分享一波。

代码如下图:

import requests
import re

def News_Spider():#定义一个爬虫
    url = 'https://news.sina.com.cn/'#url地址,新浪新闻
    headers = {#请求头
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    response = requests.get(url,headers,verify=False)#针对https,采用verify=False
    response.encoding='utf-8'#编码方式
    html = response.text#获取页面源代码
    #print(html)#打印源代码
    reg = 'target="_blank">(.*?)</a>'#设置规则
    content = re.findall(reg,html)#从页面源代码中筛选
    ls = []#定义一个空列表
    for c in content:
        if '<' in c:
            continue
        else:
            if len(c) > 6 and '客户端' not in c:
                #print(c)
                ls.append(c)
            else:
                continue
    docu_set = {}#定义一个字典
    for l in range(len(ls)):
        docu_set['d{}'.format(l+1)] = ls[l]#格式化方法,从1开始
    return docu_set

def change_set():
    all_words = []#定义一个空列表用于存储
    docu_set = News_Spider()
    for i in docu_set.values():
        cut = i.split()#分词
        all_words.extend(cut)#添加分词
    set_all_words = set(all_words)
    return set_all_words
    #print(set_all_words)

def reverse_index():
    invert_index = dict()#定义空字典
    set_all_words = change_set()#将返回值传递给变量
    docu_set = News_Spider()
    for b in set_all_words:
        temp = []
        for k in docu_set.keys():
            field = docu_set[k]
            split_field = field.split()
            if b in split_field:
                temp.append(k)
        invert_index[b] = temp
    print(invert_index)
    return invert_index

def Select():
    docu_set = News_Spider()
    invert_index = reverse_index()
    news = []
    # for i in invert_index:
    #     print(invert_index[i])
    while True:
        Find = str(input('请输入查找内容:'))
        if Find == '不查了':
            break
        for Contetnt in invert_index:#循环每一个键
            if Find in Contetnt:#如果输入在键的字符串中
                Result = invert_index[Contetnt]#循环出字典中每一个对应的值
                #print(Result)
                for r in Result:#循环每一个值
                    if r in docu_set.keys():#如果值在字典中
                        news.append(docu_set[r])#列表增加字典docu_set的值
                        print(docu_set[r])#打印输出字典的值
                    else:
                        continue
            else:
                if Find not in Contetnt:
                    news.append('很抱歉,没有找到更多内容!!')
        #news = set(news)
        for n in news:
            if '很抱歉' in n:
                print(n)
                break
            else:
                print(n)

def main_function():#定义一个主方法
    News_Spider()
    change_set()
    reverse_index()
    Select()

if __name__ == '__main__':#程序入口
    main_function()

运行结果如下图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于代码的解释,我写在注释中了。

到此这篇关于Python实现简单的索引排序与搜索功能的文章就介绍到这了,更多相关python实现索引排序和搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于jieba分词实现snownlp情感分析

    Python基于jieba分词实现snownlp情感分析

    情感分析(sentiment analysis)是2018年公布的计算机科学技术名词,它可以根据文本内容判断出所代表的含义是积极的还是负面的等。本文将通过jieba分词实现snownlp情感分析,感兴趣的可以了解一下
    2023-01-01
  • GELU激活函数算法

    GELU激活函数算法

    这篇文章主要为大家介绍了GELU激活函数算法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Django Middleware自定义中间件及作用详解

    Django Middleware自定义中间件及作用详解

    这篇文章主要为大家介绍了Django Middleware自定义中间件示例及其作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • opencv 阈值分割的具体使用

    opencv 阈值分割的具体使用

    这篇文章主要介绍了opencv 阈值分割的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python argparse模块通过后台传递参数实例

    python argparse模块通过后台传递参数实例

    这篇文章主要介绍了python argparse模块通过后台传递参数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python格式化输出字符串方法小结【%与format】

    Python格式化输出字符串方法小结【%与format】

    这篇文章主要介绍了Python格式化输出字符串方法,结合实例形式总结分析了使用%与format函数进行字符串格式化操作相关实现技巧与注意事项,需要的朋友可以参考下
    2018-10-10
  • Python处理日期和时间的方法总结

    Python处理日期和时间的方法总结

    这篇文章主要介绍了Python时间和日期的处理方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • python实现图片压缩代码实例

    python实现图片压缩代码实例

    这篇文章主要介绍了python实现图片压缩代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现将MongoDB中的数据导入到MySQL

    Python实现将MongoDB中的数据导入到MySQL

    这篇文章主要为大家详细介绍了如何通过Python封装一个将 MongoDB 中的数据导入到 MySQL 中的 Python 工具类 MongoToMysql,感兴趣的可以了解一下
    2023-05-05
  • Numpy中np.dot与np.matmul的区别详解

    Numpy中np.dot与np.matmul的区别详解

    本文主要介绍了Numpy中np.dot与np.matmul的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论