try:
name = div_each.find("h1",class_="name").find("span",class_="ng-binding").text.strip()
des = div_each.find("p",class_="description ng-binding ng-scope").text.strip()
url =div_each.find("div",class_="text").find("a",class_="ng-binding").text.strip()
#total.append(url)
total.append([name, des, url])
except Exception as e:
pass
RT,我的需求是,即使数据不全,只要name,des,url三个数据有一个存在,就要作为单独一条抓出来。
但为了防止报错我用了try except,但是这样处理的话,就会遗漏有缺陷的数据。
有什么更好的办法来处理这个问题呢?有人提到用get,但是好像get只能提属性,有时候我要提元素的text,这该咋办呢?
实现方法可以改变一下程序结构,try except结构不变
lists = []
try:
name = div_each.find("h1", class_="name").find("span", class_="ng-binding").text.strip()
lists.append(name)
# total.append(url)
except Exception as e:
lists.append('')
try:
des = div_each.find("p", class_="description ng-binding ng-scope").text.strip()
lists.append(des)
except:
lists.append('')
try:
url = div_each.find("div", class_="text").find("a", class_="ng-binding").text.strip()
lists.append(url)
except:
lists.append('')
if lists.count('')<3:
total.append(lists)
有帮助请采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力
try:
name = div_each.find("h1",class_="name").find("span",class_="ng-binding").text.strip()
except:
name = ''
try:
des = div_each.find("h1",class_="name").find("span",class_="ng-binding").text.strip()
except:
des= ''
try:
url = div_each.find("h1",class_="name").find("span",class_="ng-binding").text.strip()
except:
url = ''
判断一下这三个不同时为空,然后添加到列表不就行了