2008-10-21 52 views
6

我一直在试图从HTML文件中去除一些数据。我有编码的逻辑来获得正确的单元格。现在我在努力让 '细胞' 的实际内容:如何使用BeautifulSoup从HTML'datacell'中获取文本

,这里是我的htm剪断

那么headerRows [0] [10] .contents

[<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">  
    </font></font></font>] 

注意,这是一个列表来自Python []的项目。

我需要苹果生产的价值,但无法达到它。

任何建议,将上一本好书,说明这一点会赚我的感恩永恒


感谢您的回答感谢

建议。但是 - 没有更普遍的答案。会发生什么,如果我的手机没有一个大胆的属性

说它是:

[<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">  
    </font></font></font>] 

苹果生产

我努力学习阅读/理解的说明文件和回复将有帮助

我真的很感谢这个帮助。关于这些答案的最好的事情是,从它们中推广起来容易得多,然后我可以从BeautifulSoup文档中做到这一点。我学会了在Fortran时代进行编程,而我在享受学习python的同时也消除了它的力量 - BeautifulSoup就是一个例子。对我来说,制作整个文档非常困难。

干杯

回答

3
headerRows[0][10].contents[0].find('b').string 
5

BeautifulSoup documentation应该包括你需要的一切 - 在这种情况下,它看起来像你想使用findNext

headerRows[0][10].findNext('b').string 

不依赖于<b>标签一个更通用的解决办法请使用参数findAll,它允许您仅搜索NavigableString对象:

>>> s = BeautifulSoup(u'<p>Test 1 <span>More</span> Test 2</p>') 
>>> u''.join([s.string for s in s.findAll(text=True)]) 
u'Test 1 More Test 2' 
0

我有一个基类,我用一堆方法扩展了所有美丽的汤类,这些方法帮助我获得一组元素中的文本,而这些元素不一定要依赖于结构。其中一种方法如下:

def clean(self, val): 
    if type(val) is not StringType: val = str(val) 
    val = re.sub(r'<.*?>', '', s) #remove tags 
    val = re.sub("\s+" , " ", val) #collapse internal whitespace 
    return val.strip() #remove leading & trailing whitespace 
相关问题