我一直在尝试对通过本地网络访问的URL进行分类。我设法找到了很长的网址列表,并将它们映射到使用它们的网站/服务。我需要将这些URL输入到具有以下字段的分类系统中:
我一直是苹果公司,负责对大约62,000个URL进行分类。我可以将它们直接导入系统,但是有一些问题。
首先,我希望系统易于阅读且易于维护(这就是为什么首先添加通配符支持的原因)。其次,这是我的主要问题,我想将同时提供视频/音频/游戏内容的CDN关联到正确的品牌中。
如果我们考虑流服务FakeStreaming()com。我会在系统中添加*()fakestreaming()com,但这不会选择实际上正在交付内容的CDN,而只会选择面向公众的网站。我观察到使用以下CDN URL的FakeStreaming()com:
由此我们可以看出CDN使用以下命名约定:
<“ a” |“ d”> <3-4个数字> <“ hls” |“ dash”> video()genericcdn()com()
由此我输入两个通配符-
a ??? dashvideo()genericcdn()com
许多服务都使用相同的CDN,所以我必须尽可能精确。我必须为此使用通配符,就像我将“ a432hlsvideo()genericcdn()com”定义为字符串一样,下周有人会从“ a132hlsvideo()genericcdn()com”接收流式播放,系统将无法理解它们是否来自同一流。服务。
我正在尝试使用Python的difflib.get_close_matches()函数对相似的域进行分组。 NBA流媒体服务的输出如下。
['nbanlds317live()akamaized()net', 'nbanlds263live()akamaized()net', 'nbanlds245vod()akamaized()net', 'nbanlds225live()akamaized()net', 'nbanlds289live()akamaized()net', 'nbanlds316live()akamaized()net', 'nbanlds294live()akamaized()net', 'nbanlds264live()akamaized()net', 'nbanlds233live()akamaized()net', 'nbanlds301live()akamaized()net', 'nbanlds235live()akamaized()net', 'nbanlds307live()akamaized()net', 'nbanlds293live()akamaized()net', 'nbanlds216live()akamaized()net', 'nbanlds222live()akamaized()net', 'nbanlds285live()akamaized()net', 'nbanlds291live()akamaized()net', 'nbanlds295live()akamaized()net', 'nbanlds284live()akamaized()net', 'nbanlds314live()akamaized()net', 'nbanlds290live()akamaized()net', 'nbanlds311live()akamaized()net', 'nbanlds304live()akamaized()net', 'nbanlds209live()akamaized()net', 'nbanlds262live()akamaized()net', 'nbanlds315live()akamaized()net', 'nbanlds158live()akamaized()net', 'nbanlds310live()akamaized()net', 'nbanlds119vod()akamaized()net', 'nbanlds211live()akamaized()net', 'nbanlds213live()akamaized()net', 'nbanlds302live()akamaized()net', 'nbanlds318live()akamaized()net', 'nbanlds288live()akamaized()net', 'nbanlds287live()akamaized()net', 'nbanlds210live()akamaized()net', 'nbanlds237live()akamaized()net', 'nbanlds313live()akamaized()net', 'nbanlds234live()akamaized()net', 'nbanlds286live()akamaized()net', 'nbanlds312live()akamaized()net']
['a1715()dscw10()akamai()net', 'a245()dscw10()akamai()net', 'a1323()dscw10()akamai()net', 'a1951()dscw10()akamai()net', 'a28()dscw10()akamai()net', 'a1170()dscw10()akamai()net', 'a762()dscw10()akamai()net', 'a988()dscw10()akamai()net']
如您所见,它将NBA CDN使用的URL分为逻辑分组。
我的问题是:我将如何编写一些代码来自动生成通配符字符串以匹配这些逻辑组。即每个组1个或多个通配符。它需要创建尽可能多的通配符字符串,以便匹配数组中的所有URL。例如,NBA分组的输出为:
和
我试图找到某人试图做类似事情的任何例子,但我还是空着。我最初的想法是将URL用小数位分割并比较相似的段,但是与此同时,我遇到了一些问题,其中(如上所示)URL中存在诸如可变数字之类的问题。我曾尝试将RegEx整合进来,但我对它们的理解不够,无法做到这样。
很长的帖子我很抱歉-我只是想确保我有足够的细节。非常感谢你! :)