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'])

 

 

 

posted @ 2018-02-06 22:02  糖宝虫  阅读(1390)  评论(0编辑  收藏  举报