dtanys使用技巧

  1. 1. dtanys使用场景

dtanys使用场景

如果不熟悉语法可参考 dtanys项目

核心语法:XDict(Parsing object, Analytical syntax).edict()

Parsing objectlist or dict or tuple

Analytical syntaxstr

  • 提取所有键为 k 的值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from dtanys import XDict
    from pprint import pprint
    import requests

    url = 'http://c.3g.163.com/nc/video/list/VAP4BFR16/y/0-10.html'

    res = requests.get(url,headers={'User-Agent':"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50"}).json()

    # 打印数据
    pprint(res)

    # 提取所有mp4的url
    print(XDict(res,'/*mp4_url').edict())
  • 提取对象形如 iterable[dict]的数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from dtanys import XDict
    from pprint import pprint
    import requests

    test_object = [
    {'a': 1, 'b' : 2},
    {'a': 3, 'b' : 4},
    {'a': 5, 'b' : 6, 'e' : 0},
    {'a': 7, 'b' : 8},
    {'a': 9, 'b' : 10, 'c': 0},
    ]

    print(XDict(test_object,"//['a','b']").edict())

注://['k'] 需要添加 '' or "" ,且选取的键值在 iterable 都需要存在

  • 提取分形节点一致的数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from dtanys import XDict
    from pprint import pprint
    import requests

    url = 'http://c.3g.163.com/nc/video/list/VAP4BFR16/y/0-10.html'

    res = requests.get(url,headers={'User-Agent':"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50"}).json()

    # 打印数据
    pprint(res)

    # 提取所有alias,tid,tname,topic_icons 可排序
    print(XDict(res,"/VAP4BFR16//videoTopic['tid','alias','tname','topic_icons']").edict())

  • 配合切片一起使用
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from dtanys import XDict
    from pprint import pprint
    import requests

    url = 'http://c.3g.163.com/nc/video/list/VAP4BFR16/y/0-10.html'

    res = requests.get(url,headers={'User-Agent':"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50"}).json()

    # 打印数据
    # pprint(res)

    # 提取所有res[VAP4BFR16]下标为1,3,5,7,9,10的m3u8_url,mp4_url
    print(XDict(res,"/VAP4BFR16[::2]//['m3u8_url','mp4_url']").edict())

注:当使用切片是选取对象必须是 iterable


其他问题请前往:issues