首页 > 其他分享 >api/MarkModule

api/MarkModule

时间:2023-05-25 18:55:04浏览次数:44  
标签:index name url MarkModule list len api arr2

1、介绍

关于标记的一些函数。

2、代码

from api.PropertiesClasses import Params

"""
自动标记
@url: str类型,表示url
@message: str类型,表示请求报文
@name_list: str类型,根据url的直接参数的名称标记其对应的值,name_list参数可以通过空格分隔多个参数名称
@text_list: str类型,也是根据空格分隔,匹配首次结果被标记

@return: list[int]类型,元素个数必须为偶数,依次表示各组标记的起止索引
url和message这两者参数必须且只能设置一个不为空字符串
"""


def mark(url: str = '', message: str = '', name_list: str = '', text_list: str = ''):
    """mark(url = '', message = '', name_list = '', text_list = '') -> list[int]"""
    result = list()
    if url == '' and message == '':
        return result
    elif url != '':
        # 排除可能的hash部分干扰
        url_2 = url.split('#')[0]
    else:
        arr = message.split('\n', maxsplit=1)
        arr1 = arr[0].split(' ')

    # 完全自动
    if name_list == '' and text_list == '':
        index = 0
        # 存在直接参数
        if url_2 != '' and '?' in url_2:
            arr2 = url_2.split('?')
            index = len(arr2[0])
        elif message != '' and '?' in arr1[1]:
            arr2 = arr1[1].split('?')
            index = len(arr1[0] + ' ' + arr2[0])
        if index != 0:
            params = Params(arr2[1])
            for name, value in params.property_list:
                # 前面的+1是?或者&字符,后面的+1是=字符
                index = index + 1 + len(name) + 1
                if value != '':
                    result.extend([index, index + len(value)])
                    index = index + len(value)
        else:
            index = 0
            # 不存在直接参数,但存在路径参数
            if url_2 != '' and url_2.count('/')>2:
                # 0、1、2非路径部分
                arr2 = url.split('/')
                index = len(arr2[0] + arr2[1] + arr2[2])
                arr2 = arr2[2:]
            elif message != '' and '/' in arr1[1]:
                arr2 = arr1[1].split('/')
                index = len(arr1[0] + ' ')
            if index != 0:
                for i in range(1, len(arr2)):
                    # 添加各级的/
                    index = index + 1
                    if arr2[i] != '':
                        result.extend([index, index + len(arr2[i])])
                        index = index + len(arr2[i])
    # 根据url直接参数
    elif name_list != '':
        # 假设name_list是空格作为分隔符
        name_list: list = name_list.split(' ')
        index = 0
        # 存在直接参数
        if url_2 != '' and '?' in url_2:
            arr2 = url_2.split('?')
            index = len(arr2[0])
        elif message != '' and '?' in arr1[1]:
            arr2 = arr1[1].split('?')
            index = len(arr1[0] + ' ' + arr2[0])
        if index != 0:
            params = Params(arr2[1])
            for name, value in params.property_list:
                # 前面的+1是?或者&字符,后面的+1是=字符
                index = index + 1 + len(name) + 1
                if value != '':
                    if name in name_list:
                        result.extend([index, index + len(value)])
                    index = index + len(value)
    # 根据直接文本
    elif text_list != '':
        if url != "":
            s = url
        else:
            s = message
        index = 0
        text_list = text_list.split(' ')
        for text in text_list:
            if text != '' and text in s[index:]:
                index = s.find(text, __start=index)
                result.extend([index, index + len(text)])
                index = index + len(s)
            if index >= len(s):
                break
    return result

标签:index,name,url,MarkModule,list,len,api,arr2
From: https://www.cnblogs.com/wd404/p/17432588.html

相关文章

  • 淘宝API技术文档解析,从入门到实战
    探索淘宝数据的奥秘,淘宝是目前国内最大的B2C电商平台之一,每天都会产生海量的数据。借助淘宝API技术文档,我们可以轻松地获取到这些数据,从而为电商运营和数据分析提供有力支持。1.什么是淘宝API?淘宝API(ApplicationProgrammingInterface)是一组软件API接口,可以让第三方应用程序和淘宝......
  • api/Request
    1、介绍 对应http请求对象。两种设置方法:基于url设置基于请求报文message设置,伴随设置协议类型https_flag2、代码importreimporttimeimportrequestsfromapi.PropertiesClassesimportHeadersfromapi.ResponseClassimportResponsefromapi.UrlClassimport......
  • 淘宝天猫京东1688拼多多商品详情API接口(商品价格监控,商品上传等场景)代码对接
    抓取淘宝商品详情价格接口代码封装如下:请求方式:HTTPS POSTGET公共参数名称类型必须描述key String 是 调用key(必须以GET方式拼接在URL中)API接口 API接口secret String 是 调用密钥api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_......
  • express开发api指南--服务器发布
    8.1Linux服务器linux服务器相对简单。一般都自带node环境。没有的话apt-get或者yum安装一下。//查看node版本node-v//把文件除了node-modules文件夹都上传到服务器//以放在opt/express为例cd/opt/expressnpminstall//使用pm2包npminstall-gpm2//在项目文件夹下执......
  • express开发api指南--记录日志
    败笔,目前还是我的败笔。没有找到好的方法去记录。现在只能记录请求的记录,api的返回记录没有记录下来。用的morgan中间件。这个在项目创建时已安装。//首先安装轮询文件流插件和时间处理插件cnpminstall--saverotating-file-streamdayjs//修改app.js//引入插件varrfs=......
  • GitHub API
    GithubAPIGitHubAPI是一个RESTfulAPI,支持HTTP请求和JSON响应。主要用于访问GitHub上的仓库、问题、pullrequest、用户、组织等信息。使用GitHubAPI,你需要遵循以下步骤:1.获取个人访问令牌首先,你需要在GitHub上创建一个个人访问令牌,用于进行API访问。在Git......
  • 基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票!我的投票地址:点击为我投票文章目录前言1.获取歌曲搜索列表api接口2.获取单个歌曲详细信息包括歌词3.总结前言首先说明,本教程仅供个人学习,研究使用,禁止用于任何的商业和非法用途。(手动狗头)之所以要研究这个,是因为我想......
  • 电商erp系统选品,跨境ERP系统选品,api接口采集数据
    ​  电商ERP系统选品优势:1.自动化选品:电商ERP系统可以根据销售数据、客户反馈、市场趋势等因素,自动化地筛选出热销商品,快速进行选品;2.数据分析功能:电商ERP系统可以对历史销售数据进行分析,得出销售趋势、客户偏好等信息,有利于精细化选品;3.库存管理:电商ERP系统可以管理商......
  • apisix 容器安装
    1.按照官方文档进行docker容器安装,安装完成后启动报错,关键错误日志如下:apisix|2023/05/2506:36:35[error]7#7:*205[lua]resolver.lua:80:parse_domain():failedtoparsedomain:etcd-server,error:failedtoquerytheDNSserver:dnsservererror:3nameerro......
  • Chat--GPT-官方最新API官方免费PC版-Chat官方API
    为您推荐chatgpt,它是一种全球最新的、可通过浏览器使用的基于GPT技术的聊天机器人平台。我们的卖点在于:国内可用:与其他海外提供的聊天机器人平台不同,chatgpt可在中国境内访问,且稳定性高。免费使用:我们提供免费使用的服务,无需购买任何版本或额外的插件,商业用户也能够免费......