如果你有一个BS对象,例如:
>>> print soup
<div>
Peter Griffin
<br>
Lois Griffin
<br>
Chris Griffin
<br>
<div> Meg Griffin </div>
<br>
Stewie Griffin
<br>
<div>
你怎么能打印soup.text
排除内<div>
内的所有东西?
我想要的输出是:
>>> print <clever_code>
Peter Griffin
Lois Griffin
Chris Griffin
Stewie Griffin
干杯!
一种选择是删除内部<div>
标签并在删除多余空格后打印soup
的文本:
for tag in soup.select('div div'):
tag.clear()
print('n'.join(re.split(r's*n+s*', soup.text.strip())))
它产生:
Peter Griffin
Lois Griffin
Chris Griffin
Stewie Griffin
使用基于
Python stdlib 模块构建的类...
from HTMLParser import HTMLParser
class HTML_tag_stripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = HTML_tag_stripper()
s.feed(html)
return s.get_data()
>>> print strip_tags( str(soup) )