У меня есть что-то вроде этого, используя BeautifulSoup:
for line in lines:
code = l.find('span', {'class':'boldHeader'}).text
coded = l.find('div', {'class':'Description'}).text
definition = l.find('ul', {'class':'definitions'}).text
print code, coded, def
Однако не все элементы существуют во все времена. Я могу заключить это в попытку, за исключением того, чтобы это не прерывало выполнение программы следующим образом:
for line in lines:
try:
code = l.find('span', {'class':'boldHeader'}).text
coded = l.find('div', {'class':'Description'}).text
definition = l.find('ul', {'class':'definitions'}).text
print code, coded, def
except:
pass
Но как я выполняю утверждения жадным способом? Например, если доступно только два элемента code
и coded
, я просто хочу получить их и продолжить выполнение. На данный момент, даже если code
и coded
существуют, если def
не существует, команда печати никогда не выполняется.
Один из способов сделать это - поставить try...except
для каждого утверждения, подобного этому:
for line in lines:
try:
code = l.find('span', {'class':'boldHeader'}).text
except:
pass
try:
coded = l.find('div', {'class':'Description'}).text
except:
pass
try:
definition = l.find('ul', {'class':'definitions'}).text
except:
pass
print code, coded, def
Но это уродливый подход, и я хочу чего-нибудь чище. Есть предложения?