【发布时间】:2010-11-06 19:51:48
【问题描述】:
我用 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
但这是一种丑陋的方法,我想要一些更清洁的方法。有什么建议吗?
【问题讨论】:
标签: python beautifulsoup