zoukankan      html  css  js  c++  java
  • python3.6从含有html代码的json的中取出某个值

    python3.6从含有html代码的json的中取出某个值

    之前在做接口测试的时候,网站的后端是用java写的,然后接口的response返回的都是json格式,json很简单,就是字典,类似这样子的。

    后面跳槽到了另外一家公司,网站是用php写的,接口返回的response格式也是json,不过json里会有一部分是html代码,此时要从html找一个值来验证接口的正确性。还好python3.6里面有一个自带的库可以

    帮我们解决这个问题。

     接下来就讲一下解决步骤:

    • HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析。
    • 本文主要简单讲一下HTMLParser的用法.

    • 使用时需要定义一个从模块html.parser中的类HTMLParser继承的类,重定义函数:

      • handle_starttag( tag, attrs)
      • handle_startendtag( tag, attrs)
      • handle_endtag( tag)
      • handle_data(data)

    1. 获取标签属性

    • tag是的html标签,attrs是 (属性,值)元组(tuple)的列表(list).

    如一个标签为:

    <input type="hidden" name="NXX" id="IDXX" value="VXX" />

    那么它的attrs列表为

    `[(‘type’, ‘hidden’), (‘name’, ‘NXX’), (‘id’, ‘IDXX’), (‘value’, ‘VXX’)]

    import requests
    from html.parser import HTMLParser
    """需求:response里面的oriprice的值"""
    
    class mytest(HTMLParser):
        #继承HTMLParser类
        def __init__(self):
            #用父类的__init__
            HTMLParser.__init__(self)
        def handle_starttag(self, tag, attrs):
            # 重写handle_starttag方法
            if tag=="span":
               for key,values in attrs:
                   if key=="oriprice":
                       print(values)
    
    if __name__=="__main__":
        data = requests.get("https://www.newchic.com/ajaxload/ajax-ajaxProductDetails.html?products_id=1148331&qt=1517921055502")
        print(data.json())
        print(type(data.json()))
        print(data.json()['ajaxWhichPrice'])
    
        re=mytest()
        re.feed(data.json()['ajaxWhichPrice'])

     

  • 相关阅读:
    站立会议(3)
    站立会议(2)
    站立会议(1)
    团队报告
    Laravel5.1 模型 --一对多关系
    jQuery 操作DOM
    Laravel5.1 模型 --一对一关系
    Laravel5.1 模型--查询作用域
    Laravel5.1 模型--ModelFactory
    jQuery 选择器
  • 原文地址:https://www.cnblogs.com/lystbc/p/8424451.html
Copyright © 2011-2022 走看看