万能框指同时支持股票、基金、新闻搜索和命令查询等。
下面按新闻、股票、基金检索顺序介绍。
一、新闻搜索引擎主要技术
当你用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]}}
...  {{i[0]}}
</span>   
</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