判断返回值长度(比如是否为空),执行后续步骤(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])
打印结果