flask查询whois信息实例
admin
2023-07-31 00:46:14
0

flask基础实现不再赘述,不了解的同学可以通过官方文档学习
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms

Step 1 新建查询whois信息的form类

在forms.py中添加如下代码:

1234567 # -*- coding: utf-8 -*-from flask.ext.wtf import Formfrom wtforms import StringFieldfrom wtforms.validators import DataRequired class WhoisForm(Form):    myDomain = StringField(\’myDomain\’, validators=[DataRequired()])

很简单,跟官方教程差不多

Step 2 创建Whois信息模板

新建一个whois.html文件,代码如下:

1234567891011121314151617181920212223242526272829 lang=\”en\”>    charset=\”UTF-8\”>    </span><span class="crayon-i ">GetWhois</span><span class="crayon-r ">text=#000000 vLink=#205D83 aLink=#ff6600 link=#10304A bgColor=#ffffff text-align=\”center\”>


align=\”center\”>

Whois信息查询

style=\”HEIGHT: 22px\”>

align=\”center\”>
action=\”\” method=\”post\” name=\”whois\” text-align=\”center\”>    {{ form.hidden_tag() }}    

{{form.myDomain(size=80)}}

    

type=\”submit\” value=\”查询\”>

align=\”center\”>

style=\”HEIGHT: 30px\”>

    width=\”800px\” border=\”1\”>{% for key in info %}                {%endfor%}
width=\”150px\” align=\”left\”> {{ key }} :aligh=\”left\”>{{ info[key] }}

 这里只为做实例,所以没有设置继承模板,如果是一个整体的项目,建议通过继承实现,保持风格一致。
实例通过whois模块得到相关信息,返回的结果是一个字典,如图所示
所以用了以下jinja2语句将信息输出到网页上

123456 width=\”800px\” border=\”1\”>{% for key in info %}                {%endfor%}
width=\”150px\” align=\”left\”> {{ key }} :aligh=\”left\”>{{ info[key] }}

Step 3 Whois函数实现

在views.py中添加实现代码

1234567 @app.route(\’/whois\’,methods=[\’GET\’,\’POST\’])def Whois():    form = WhoisForm()    if form.validate_on_submit():        info_dict = GetWhois.MyWhois(form.myDomain.data)        return render_template(\’whois.html\’,form = form, info = info_dict)    return render_template(\’whois.html\’,form = form)

其中GetWhois.MyWhois函数的实现,在GetWhois.py中实现,具体为

123456789101112 #!/usr/bin/env python# -*- encoding: utf-8 -*- import whois def MyWhois(mydomain):    try:        w = whois.whois(mydomain)        return w    except Exception,e:        print Exception,e        return {}

ok,程序到这里基本可以实现需要的内容了,查询效果如图

Step 4 进一步优化

我们看到输出到网页时,如status、domain_name等字段的值是列表,是否可以将其进一步分解输出呢,答案是可行的。
我们可以利用jinja2的内建检查器来判断参数是否为list,若是,则分解打印
于是将whois.html修改成

12345678910111213141516   width=\”800px\” border=\”1\”>{% for key in info %}                        {%endfor%}        
width=\”150px\” align=\”left\”> {{ key }} :aligh=\”left\”>            {% if info[key] is sequence %}                {% for value in info[key] %}                    {{ value }}
                {% endfor %}            {% else %}                {{ info[key] }}            {% endif %}        

执行后看效果图,What The Fuck!!!字符串也被分解打印了。

再次修改,判断为字符串,则先打印,然后再去判断是否为List

123456789101112131415161718 <table width=\”800px\” border=\”1\”>{% for key in info %}        <tr><td width=\”150px\” align=\”left\”> {{ key }} :</td>        <td aligh=\”left\”>            {% if info[key] is string %}                {{ info[key] }}            {% elif info[key] is sequence %}                {% for value in info[key] %}                    {{ value }}<br/>                {% endfor %}            {% else %}                {{ info[key] }}            {% endif %}        </td>        </tr>{%endfor%}        </table><br/>

终于乖乖的出来了我们期盼的结果

小结

实例写完后,目录结构为

12345678910111213 |____app| |______init__.py| |____forms.py| |____GetWhois.py| |____static| | |____images| | | |____logo.png| |____templates| | |____whois.html| |____views.py|____config.py|____run.py|____tmp

学习了flask的form基本实现,jinja2的部分语法。

附录 内建检查器:

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...