2013-02-05 50 views
1

我使用BeautifulSoup解析网站。我知道我想要的内容位于contentdiv。而且内容全部在p标签中。所以我跑BeautifulSoup - 从findAll元素中获取课程

paragraphs= content.findAll('p') 

这里很好。我遍历列表,并且遇到一个if条件,如果遇到特定的类,它将跳出循环。

for para in paragraphs: 
    if 'class' in para: 
     if para['class']=='end': 
      break 

但这不起作用。当我运行循环时,遇到类end时不会中断。事实上,在迭代循环时,所有元素的类似乎都会丢失。

for para in paragraphs: 
    if 'class' in para: 
     print para['class'] 

即使存在有类的元素,也不会打印出任何内容。事实上,这段代码并打印出类 -

>>>paragraphs[0]['class'] 
u'dateline' 

但是,

>>> print 'class' in paragraphs[0] 
False 

我不安静明白是怎么回事。最终我通过使用例外来解决我的问题,但这有点让我烦恼。任何人都可以解释这里发生了什么?

+0

你要解析哪个网站? – TerryA

+0

@Haidro Aaron Schwartzs博客。但我[做](https://github.com/elssar/aaronsw_RawThought)我想做什么,只是这件事让我困惑了一下,我想知道发生了什么。 – elssar

回答

1

当你把if 'class' in para,你真的在​​说,是否有段落中的实际字类。我相信你的意图是看看它是否有班级,所以你想要的是:

for para in paragraphs: 
    if para.has_key('class'): 
     if para['class'][0] == 'end': # Notice that I put [0], as para['class'] is a list. 
      break