# -*- coding: UTF-8 -*-
import re # 搜索逻辑
def querylogic(list):
query = {}
if len(list) > 1 or len(list[0].split(':')) > 1:
for _ in list:
if _.find(':') > -1:
if _.split(':')[0] == 'port':
query['port'] = int(_.split(':')[1])
elif _.split(':')[0] == 'banner':
zhPattern = re.compile(u'[\u4e00-\u9fa5]+')
contents = _.split(':')[1]
match = zhPattern.search(contents)
# 如果没有中文用全文索引
if match:
query['banner'] = {"$regex": _.split(':')[1], '$options': 'i'}
else:
query['$text'] = {'$search': _.split(':')[1]}
elif _.split(':')[0] == 'ip':
ip = _.split(':')[1]
query['ip'] = {"$regex": ip}
elif _.split(':')[0] == 'server':
query['server'] = _.split(':')[1].lower()
elif _.split(':')[0] == 'title':
query['webinfo.title'] = {"$regex": _.split(':')[1], '$options': 'i'}
elif _.split(':')[0] == 'tag':
query['webinfo.tag'] = _.split(':')[1].lower()
elif _.split(':')[0] == 'hostname':
query['hostname'] = {"$regex": _.split(':')[1], '$options': 'i'}
elif _.split(':')[0] == 'all':
filter = []
for i in ('ip', 'banner', 'port', 'time', 'webinfo.tag', 'webinfo.title', 'server', 'hostname'):
filter.append({i: {"$regex": _.split(':')[1], '$options': 'i'}})
query['$or'] = filter
else:
query[_.split(':')[0]] = _.split(':')[1]
else:
filter = []
for i in ('ip', 'banner', 'port', 'time', 'webinfo.tag', 'webinfo.title', 'server', 'hostname'):
filter.append({i: {"$regex": list[0], '$options': 'i'}})
query['$or'] = filter
return query

python和搜索的更多相关文章

  1. python基础:搜索路径

    如何将写好的脚本或者是模块加入python的搜索路径? >>>import sys >>> sys.path ['', '/Library/Frameworks/P ...

  2. Python 模块搜索路径 -- (转)

    最近在看<Python源码剖析>,对Python内部运行机制比以前了解的更深入了,感觉自己有机会也可以做个小型的动态脚本语言了,呵呵,当然是吹牛了.目的当然不是创造一个动态语言,目的只有一 ...

  3. python的搜索路径与包(package)

    python的搜索路径其实是一个列表,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败: >>> import ...

  4. Python排序搜索基本算法之归并排序实例分析

    Python排序搜索基本算法之归并排序实例分析 本文实例讲述了Python排序搜索基本算法之归并排序.分享给大家供大家参考,具体如下: 归并排序最令人兴奋的特点是:不论输入是什么样的,它对N个元素的序 ...

  5. Python import搜索的路径顺序

    在程序中导入时,如下顺序 1.Python 标准库模块2.Python 第三方模块3.应用程序自定义模块   import的搜索顺序: 首先判断这个module是不是built-in即内建模块,如果是 ...

  6. Python模块搜索路径

    当一个名为 spam 的模块被导入的时候,解释器首先寻找具有该名称的内置模块.如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 spam.py 的文件.sys.path 初始 ...

  7. 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法

    git:https://github.com/linyi0604/MachineLearning 如何确定一个模型应该使用哪种参数? k折交叉验证: 将样本分成k份 每次取其中一份做测试数据 其他做训 ...

  8. Python import搜索路径相关

    import搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 查看当前的搜索路径 import sys p ...

  9. Python 模块搜索路径

    Python 会在什么地方寻找文件来导入模块? 使用命名为 path 变量的存储在标准 sys 模块 下的一系列目录名和 ZIP 压缩文件. 你可以读取和修改这个列表.下面是在我的 Mac 上 Pyt ...

  10. 第11.5节 Python正则表达式搜索任意字符匹配及元字符“.”(点)功能介绍

    在re模块中,任意字符匹配使用"."(点)来表示, 在默认模式下,点匹配除了换行的任意字符.如果指定了搜索标记re.DOTALL ,它将匹配包括换行符的任意字符.关于搜索标记的含义 ...

随机推荐

  1. linux之lamp环境的搭建

    linux之lamp环境的搭建 1.安装lamp环境的安装工具 我们的lamp环境都是采用源码包进行编译安装: 编译安装需要工具gcc gcc-c++. 建议在线联网安装:yum  -install ...

  2. NFS与AutoNFS实例

    NFS概述: NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文 ...

  3. java 替换字符串模板(模板渲染)

    java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...

  4. 2. UITest相关APIs

    1. XCUIApplication 这是你正在测试的应用的代理.它能让你启动应用,这样你就能执行测试了.它每次都会新起一个进程,这会多花一些时间,但是能保证测试应用时的状态是干净的,这样你需要处理的 ...

  5. Oracle创建用户及权限设置

    oracle用户创建及权限设置 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplu ...

  6. laravel模型关联

    hasOne 一对一 用户名-手机号hasMany 一对多   文章-评论belongTo 一对多反向 评论-文章belongsToMany    多对多 用户-角色hasManyThrough 远程 ...

  7. IOS开发之关于UIButton点击没有响应问题

    1.如果一个UIButton的frame超出父视图的frame,UIButton还是可以显现的,但响应不了点击事件了,当开发中,遇到UIButton点击没有响应问题时,我们需要输出btn及它父视图的f ...

  8. 基于jmeter和shell的接口性能自动化

    基于jmeter和shell的接口性能自动化 1. 总体需求 由于性能测试中涉及的查询接口多,版本迭代频繁,版本更新后自动跑一轮查询业务的性能,可以及时发现一些开发修复bug触发的非预期的bug,利用 ...

  9. 1《数学之美》第1章 文字和语言 vs 数字和信息

    1<数学之美>第1章 文字和语言 vs 数字和信息

  10. SQLite运算符

    SQLite运算符 SQLite的运算符是什么? 运算符是一个保留字或一个字符主要用于SQLite语句的WHERE子句来执行操作,如比较和算术运算. 操作符用于指定条件的SQLite语句和作为连词在一 ...