在R中解析用户代理,但如何使用python?

时间:2018-11-13 12:34:42

标签: python python-3.x

我有字符串,我需要使用以下信息解析Agent:

我的约会日期看起来像:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"

并输出类似数据表的信息,其中包含列中的信息。

在R中尝试使用包:

library(uaparserjs)
library(dplyr)
dplyr::glimpse(ua_parse(mydata))%>%data.frame()

输出:

Observations: 1
Variables: 7
$ userAgent     <chr> "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safa...
$ ua.family     <chr> "Chrome"
$ ua.major      <chr> "67"
$ ua.minor      <chr> "0"
$ ua.patch      <chr> "3396"
$ os.family     <chr> "Linux"
$ device.family <chr> "Other"

有没有建议与PYTHON一起使用的最佳软件包?

1 个答案:

答案 0 :(得分:1)

这将为您提供所有软件的版本和其他信息(如果提供):

import re

string = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"

software = re.findall(r"\w+/[\d\.]+\.? \(.+?\)|\w+/[\d\.]+\.?", string)

info = {}
for i in software:
    version=re.search(r"(?<=/)[\d+\.]+\,?", i).group()
    try:
        additional_info = re.search(r"(\(.+?\))", i).group()
    except:
        additional_info = ""
    info[re.search(r"\w+(?=/)",i).group()] = {"version":version, "additional_info":additional_info}

第一个正则表达式找到所有软件,然后我创建具有结构{"software1" : {"version" : version, "additional_info" : additional_info}, "software2" :....}的字典