Element.string如果
元素中直接 包含文本 ,则 仅包含一个值。不包括嵌套元素。
如果您使用的是BeautifulSoup
4,请
Element.stripped_strings改用:
print ''.join(x.stripped_strings)
对于BeautifulSoup 3,您需要搜索所有文本元素:
print ''.join([unipre(t).strip() for t in x.findAll(text=True)])
如果您想将元素
<th>和
<td>元素组合成字典,则需要遍历所有
<th>元素,然后使用
.findNextSibling()来定位相应的
<td>元素,然后将其与上述
.findAll(text=True)技巧结合起来以自己构建字典:
info = {}rows = table.findAll("th")for headercell in rows: valuecell = headercell.findNextSibling('td') if valuecell is None: continue header = ''.join([unipre(t).strip() for t in headercell.findAll(text=True)]) value = ''.join([unipre(t).strip() for t in valuecell.findAll(text=True)]) info[header] = value


