我有這樣的事情使用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
不存在,print命令也不會執行。這樣做的
一種方法是把一個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
但是,這是一個醜陋的方式和我想要的東西更清潔。有什麼建議麼?
謝謝你的建議。 +1進行詳細說明。獲得的教訓:) – Legend 2010-11-06 20:18:10
好的答案。使用try/catch作爲「正常」程序流程的一部分可能不太有利。 – zellus 2010-11-06 21:46:57