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