6

我一直在尝试从 HTML 文件中删除一些数据。我有逻辑编码以获得正确的单元格。现在我正在努力获取“单元格”的实际内容:

这是我的 HTML 片段:

headerRows[0][10].contents

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

请注意,这是来自 Python [] 的列表项。

我需要 Apples Produced 的价值,但无法实现。

任何建议,将不胜感激

对一本解释这一点的好书的建议将赢得我永恒的感激


谢谢你的回答。然而,没有更普遍的答案。如果我的单元格没有粗体属性会怎样

说它是:

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

生产的苹果

我正在努力学习阅读/理解文档,您的回复将有所帮助

我真的很感激这个帮助。这些答案最好的一点是,从它们中概括起来要容易得多,然后我可以从 BeautifulSoup 文档中做到这一点。我在 Fortran 时代学会了编程,现在我正在学习 python,我对它的力量感到惊讶——BeautifulSoup 就是一个例子。制作一个连贯的整个文档对我来说很难。

干杯

4

3 回答 3

5

BeautifulSoup 文档应该涵盖您需要的所有内容 - 在这种情况下,它看起来像是您想要使用的findNext

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

不依赖<b>标签的更通用的解决方案是使用text参数 to 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'
于 2008-10-21T21:14:21.743 回答
3
headerRows[0][10].contents[0].find('b').string
于 2009-03-10T08:30:14.033 回答
0

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

  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
于 2008-10-21T23:57:03.133 回答