首页 > 编程语言 >Python+Flask实现搜索引擎,万能搜索框

Python+Flask实现搜索引擎,万能搜索框

时间:2024-11-17 11:46:58浏览次数:3  
标签:get Python items per 搜索引擎 Flask 搜索 查询 page

万能框指同时支持股票、基金、新闻搜索和命令查询等。

下面按新闻、股票、基金检索顺序介绍。

一、新闻搜索引擎主要技术

当你用Python + Selenium 下载新闻之后,如何下载参考上篇博文,就会面临新闻搜索的问题。自己做一个搜索引擎的优点很明显,没有广告,节省时间,如图的比较:

搜索体验,点击链接

新闻搜索主要包括:下载、中文分词、索引和查询等功能。

1,下载参考往期文章
2,中文分词

选用jieba分词,参考网上教程安装即可。然后,添加停用词和专业词库。停用词下载点击链接,合并了网上几个版本的停用词。专业词库比如我添加了A股、港股股票名称。

def cn_fc(text,flag=0):

    import jieba

    fc = []

    #载入停用词
    stops = get_stops()

    #增加专业词
    jieba.load_userdict(word_dict)

    #增加股票名称
    for k,v in all_stocks_na.items():jieba.add_word(v)
    for k,v in hk_st_names.items():jieba.add_word(v)

    cut_res = jieba.cut(text, use_paddle=True)
3,索引

索引是搜索引擎的难点。我的做法很简单,用新闻标题和摘要代替全文,规避这个技术难点。目前下载的财经新闻大小不到500M,能满足需求。摘要生成参考以前文章。

4,查询

查询就是根据输入在文中查询相匹配的新闻。算法步骤:

1)对输入进行分词;

2)拿分词逐一扫描文件,结果存入列表;

3)按新闻出现次数给列表排序。

5,展现

搜索结果展示,使用bootstrap4的分页框架。

前端HTML中引入bootstrap.min.css

<link rel="stylesheet" href="{{ url_for('static', filename= 'css/bootstrap.min.css') }}">
<!-- 展现新闻的核心代码 -->
        <table>
          <tbody>
                {% for i in items %}
                <tr>
                <td style="padding: 10px 20px 10px;border-radius: 20px">
                    <span style="font-size: 18px">
                        <a href="#" onclick="add_link('{{i[2]}}')" target="_blank">{{i[1][0]}}<font color="red">{{i[1][1]}}</font>{{i[1][2]}}</a> <br>
                    </span>
                    <span style="font-size: 14px">
                        {{i[3][0]}}<font color="red">{{i[3][1]}}</font>{{i[3][2]}}
                        ...&nbsp&nbsp{{i[0]}}
                    </span> &nbsp&nbsp
                </td>
                </tr>
                {% endfor %}
         </tbody>
         <tr style = "border: 0;background-color: white"><td></td></tr>
         <tr><td><div style = "text-align: center;font-size: 35px;margin-left: 35%">{{ pagination.links }}</div></td></tr>

        </table>

后台Python3文件,关于分页的代码这么设置即可。

from flask_paginate import Pagination, get_page_parameter

    #检索结果,新闻列表
    items = sou_news(keys,120,2,is_mobile)

    page = request.args.get(get_page_parameter(), type=int, default=1)
    per_page = request.args.get('per_page', type=int, default=Num)

    total = min([len(items),100])

    start = (page - 1) * per_page
    end = start + per_page
    paginated_items = items[start:end]

    pagination = Pagination(page=page, per_page=per_page, total=total,
                            search=False, record_name='items',
                            css_framework='bootstrap4',
                            link_size=size,#分页大小
                            show_single_page=False,
                            page_parameter='page',
                            per_page_parameter='per_page')

    return render_template(sou_file,
                            input_wds=keys,
                            items=paginated_items,
                            page=page,
                            per_page=per_page,
                            pagination=pagination)

效果如下,体验链接

二、股票搜索

股票搜索,包括输入中文、代码、拼音简写。输入内容之后,搜索框下拉显示匹配的股票:

说一下拼音简写,安装pinyin

使用方法pinyin.get_initial将股票名称转换为首字母。

三、基金搜索

当输入基金名称、基金代码、基金经理时,返回匹配的基金列表。

当输入基金经理姓名时,为了方便,我会将输入转换为预先设置的基金经理编码,然后再返回他管理的基金。 

将新闻、股票、基金、基金经理查询合并,就是万能搜索框。本来想把基金条件查询加进去,后面一想别为了万能而万能,分开挺好。

关于基金,还有基金净值查询:

大涨大跌基金查询:

关于搜索查询目前主要是这些内容。

如果喜欢,点个关注。有问题,欢迎留言讨论。

标签:get,Python,items,per,搜索引擎,Flask,搜索,查询,page
From: https://blog.csdn.net/Jagua/article/details/143808159

相关文章

  • python岭迹图绘制函数
    一.岭迹图是什么?    岭迹图(RidgeTracePlot)是一种可视化工具,用于展示岭回归中正则化参数($\alpha$)对回归系数的影响。它能帮助我们理解特征的稳定性和正则化在控制模型复杂度中的作用。二.什么时候需要看岭迹图?存在共线性特征时当特征间高度相关,普通最小二乘法(OLS)......
  • python爬虫爬取网页中文乱码问题的解决
    一:遇到的问题1.代码点击查看代码importrequestsifname=='main':#指定URLurl='https://xxxxxx'#发送请求1.page_text=requests.get(url,headers=headers).text#打印print(page_text)2.返回的网页内容点击查看代码#省略的代码第ä¸å·宴æ¡......
  • Excel 与 Python 的强强联合:开启数据分析与处理的新大门 
     在数据处理和分析的世界里,Excel一直是大家耳熟能详、应用广泛的工具,凭借其直观的界面和丰富的函数,能够轻松应对许多基础的数据操作。而Python呢,作为一门功能强大、灵活多变的编程语言,在数据科学领域更是有着无可替代的地位。当Excel遇上Python,它们就如同默契的搭档,能......
  • python基于深度学习的音乐推荐方法研究系统
    需求设计一款好的音乐推荐系统其目的是为用户进行合理的音乐推荐,普通的用户在登录到系统之后,能够通过搜索的方式获取与输入内容相关的音乐推荐,而以管理员登录到系统之后,则可以进行徐昂管的数据管理等内容操作。此次的需求主要有以下的一些方面:(1)用户的登录过程实现,要实现为......
  • 基于大数据python 王者荣耀战队数据分析系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • python taichi 加速 dither仿色抖动算法
    教程9种dither算法与历史发展wiki:bayer有序抖动python生成任意规模bayer矩阵知乎:dither启发的艺术效果,半调/柱形taichindarray文档代码实现taichi_dither.py#!/bin/envpythonimporttaichiastiimportnumpyasnpimportcv2fromcopyimportdeepcopyti.init(......
  • Python--scikit-learn
    数据集sklearn.datasetsfromsklearn.datasetsimportload_iris,fetch_20newsgroups小数据集下载load_xxx大数据集下载fetch_xxx模型KNNK-近邻算法参考距离计算k值选择kd树fromsklearn.neighborsimportKNeighborsClassifierfromsklearn.neighborsimpor......
  • 使用python语言实现获取当前时间,按照电子表样式打印到控制台
    使用python语言实现获取当前时间,按照电子表样式打印到控制台clock.py1fromdatetimeimportdatetime23#数字04zero_line_01='---'5zero_line_02='||'6zero_line_03='||'7zero_line_04='||'8zer......
  • 【动手做】Python实现线性回归
    线性回归是机器学习中形式比较简单的模型,能够很好的进行推导和求解,也便于图形化展示。关于线性回归的概念和表示,在线性回归的概念与表示有比较详细的的介绍。本文通过手动实现、调用scikit-learn类库两种方式演示了线性回归模型,并通过matplotlib进行了可视化展示。实现过程本......
  • python实现十进制转换二进制,tkinter界面
    目录需求效果代码实现代码解释需求python实现十进制转换二进制效果代码实现importtkinterastkfromtkinterimportmessageboxdefconvert_to_binary():try:#获取输入框中的十进制数decimal_number=int(entry.get())#转......