赞
踩
本网站使用python(flask框架)搭建了一个小型网址查询网站(附详细代码)
实现功能如下:
1、网址信息查询,输入网址,输出网址相关注册信息(此处调用接口实现)
2、类似于数据管理的增加,减少,以及修改界面
本次小项目的重点在于网址查询具体从以下方面考虑:
1、当数据库中已有欲查询网址时,直接显示在网页上。
2、当数据库中没有要查询的网址的时候,调用相关接口返回信息至界面并写入数据库中。
3、当用户网址输入错误(在数据库以及全网中找不到此网站信息)时,使用相似度算法给出用户最可能想要查询的网址。
实现效果如下:
主界面
查询界面
其他三个界面如下:
在这里网站运行逻辑基本上都在run.py里面写的很详细了,可能要注意的一点(因为调用的接口,返回的是json格式的数据,所以需要按照指定格式读取数据)run.py代码如下(全部文件见压缩包):
- from flask import Flask,request,url_for,render_template,redirect
- import requests,json,re
- import difflib
- app=Flask(__name__)
- website=[]
-
- def get_equal_rate_1(str1, str2):
- return difflib.SequenceMatcher(None, str1, str2).quick_ratio()
- def read_data():
- '''
- 此函数读取txt文件中的数据
- 数据内容:科学计数法保存的多行两列数据
- 输入:txt文件的路径
- 输出:小数格式的数组,行列与txt文件中相同
- '''
- with open('back.txt') as fdata:
- while True:
- line=fdata.readline()
- if not line:
- break
- website.append([str(i) for i in line.split(";")])
- #return np.array(data_temp)
- read_data()
- def findnumber_r(Num): #这里定义一个查找网址的函数,方便复用
- for i in range(len(website)):
- xxy1 = get_equal_rate_1(website[i][1], Num )
- if (xxy1>0.8) :
- print(xxy1)
- return i
- return -1
- def findnumber(Num): #这里定义一个查找网址的函数,方便复用
- for i in range(len(website)):
- if website[i][1]==Num:
- return i
- return -1
- def save(stu):
- #定义一个保存的函数,以文本的形式把信息保存
- websitefile=open('website.txt','w')
- for i in stu:
- count=0
- for j in i:
- count=count+1
- str=j
- if count==1:
- websitefile.write(str)
- else:
- websitefile.write(";")
- websitefile.write(str)
- # websitefile.write('\\')
- websitefile.write('\n')
- websitefile.close()
-
- @app.route('/') #这里是根目录,也就是打开链接第一个访问的页面,装饰器
- def index():
- save(website)
- return render_template('index.html',website=len(website)+1) #这里的website=website,等号左边是要传给html文件的变量,右边是上面定义的二维列表
- @app.route('/delstu',methods=['GET','POST']) #这里是删除模块,对应的页面是/delstu
- def delstu():
- if request.method=='POST':
- delnumber = request.form.get('delnumber')
- if findnumber(delnumber)==-1:
- return '您输入的网址不存在'
- else:
- del website[findnumber(delnumber)]
- save(website)
- return redirect(url_for('index')) #如果找到了输入的网址执行删除操作,并重定向到首页
- return render_template('delstu.html',website=website)
- @app.route('/addstu',methods=['GET','POST']) #这里是添加模块
- def addstu():
- if request.method=='POST':
- addnumber = request.form.get('addnumber')
- if findnumber(addnumber)!=-1:
- return "您输入的网址已存在"
- else:
-
- addname = request.form.get('addname')
- adddepartment = request.form.get('adddepartment')
- adddata = request.form.get('adddata')
- addlink = request.form.get('addlink')
- addvelo = request.form.get('addvelo')
- adddetail = request.form.get('adddetail')
- if addname != None and adddepartment and addnumber != None: #不为空则添加
- website.append([addname, addnumber, adddepartment,adddata,addlink,addvelo,adddetail])
- save(website)
- return redirect(url_for('index'))
- return render_template('addstu.html') #添加成功则重定向到首页
- @app.route('/altstu',methods=['GET','POST']) #这里是修改模块,先要找到要修改的网址,如果找到了进行操作
- def altstu():
- if request.method=='POST':
- altnumber = request.form.get('altnumber')
- altdep = request.form.get('altdepartment')
- altname = request.form.get('altname')
- if findnumber(altnumber)==-1:
- return '您输入的网址不存在'
- else:
- if altdep !='': #这里的一对单引号里什么都没有,表示如果输入框里为空,不进行修改
- website[findnumber(altdep)][2]=altdep
- if altname!='':
- website[findnumber(altname)][0]=altname
- save(website)
- return render_template('index.html', website=website)
-
-
- return render_template('altstu.html')
- @app.route('/searchstu',methods=['GET','POST'])
- def searchstu():
- if request.method=='POST':
- number = request.form.get('number')
-
- if findnumber(number)==-1:
- r = requests.get("http://apidata.chinaz.com/CallAPI/Alexa?key=c87319824a3640ef8ef108cb9dc0cf51&domainName=" + number)
- with open('rr.json', 'w') as f:
- f.write(r.text)
- print(r.text)
- f.close()
- with open('rr.json', 'r') as fr:
- data1 = fr.read()
- data = json.loads(data1)
- r = data['Result']
- st = re.split(',', r['ShowDescription'])[0]
- if r['Locale']=="未知" or r['Rank']==-1 :
- xxss=findnumber_r(number)
- if xxss==-1:
- return '亲,这边查询不到您要找的网址,可以重新查询或者换个输入方式哦!'
- else:
- return render_template('searchstu.html', find=website[xxss]) # 如果找到了网址,把该网址信息传给html
-
- else:
- website.append([r['Locale'], r['Title'], str(r['Rank']), str(r['ShowOnlineSince']), str(r['LinksInCount']),str(r['ShowMedianLoadTime']), st])
- save(website)
- find = website[findnumber(number)]
- return render_template('searchstu.html', find=find)
-
-
- else:
- find=website[findnumber(number)]
- return render_template('searchstu.html',find=find) #如果找到了网址,把该网址信息传给html
- # return redirect(url_for('index'))
- return render_template('searchstu.html',website=website)
-
- if __name__ == '__main__':
- app.run(debug=True)
-
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。