判断返回值长度(比如是否为空),执行后续步骤(if..else、len的用法)

爬基金数据,净值因涨跌不同,对应的元素路径也不会一样

比如当天是涨的时候,涨跌元素的class信息为“<span class="fix_dwjz  bold ui-color-red”>”

当天是跌的时候,涨跌元素的class信息为“<span class="fix_dwjz  bold ui-color-green">”

 

假如,定义的净值变量value取值对象为<span class="fix_dwjz  bold ui-color-red”>,而当天基金是跌的,那么value的值就会是空值

即返回下图内容

 

 

所以,代码里面要加一个判断,如果返回值是空值或者返回值长度不符合某条件,则value从其他对象上取值。

代码如下:

response = requests.get('http://fund.eastmoney.com/161005.html', headers=headers, params=params, cookies=cookies, verify=False)
response.encoding = 'utf-8' #处理编码得步骤
response = response.text

valueD = re.findall('<span class="fix_dwjz  bold ui-color-green">(.+?)</span>', response, re.S)#当天净值为跌
if len(valueD)>0: #如果返回值长度大于0,即可理解为当天是跌,value从valueD取值
    value = valueD
else:            #否则,即可理解为当天是涨,value从valueZ取值
    valueZ = re.findall('<span class="fix_dwjz  bold ui-color-red">(.+?)</span>', response, re.S)#当天净值为涨
    value = valueZ
print(value[0])

打印结果

 

posted @ 2021-03-08 10:51  小贝书屋  阅读(343)  评论(0编辑  收藏  举报