这是我使用soup.findAll
提取的固定html内容myAdds = soup.findAll("div", {"class" : "data"})
<div class="data">
<img src="/page1/page2/Images/pic.png" height="13" width="13">
SOME_TEXT
</img>
</div>
现在,我只想要
SOME_TEXT
作为我的最终结果。我既不想要class =“data”中的标签和元素。 我尝试使用替换方法,但它没有用。我怎样才能得到理想的结果?
答案 0 :(得分:2)
您希望在此处使用Tag.next_sibling
,来自包含的图片标记:
>>> soup.find('div', class_='data').img.next_sibling
u'\n \xa0 SOME_TEXT\n'
在这种情况下,标签中似乎没有任何其他文字;你也可以使用Tag.get_text()
方法:
>>> soup.find('div', class_='data').get_text()
u'\n\n \xa0 SOME_TEXT\n'
如果您的HTML包含 <img/>
标记中的,那么HTML和不同的解析器将以不同方式处理:
>>> sample = '''\
... <div class="data">
... <img src="/page1/page2/Images/pic.png" height="13" width="13">
... SOME_TEXT
... </img>
... </div>
... '''
>>> soup = BeautifulSoup(sample, 'html.parser')
>>> soup.div
<div class="data">
<img height="13" src="/page1/page2/Images/pic.png" width="13">
SOME_TEXT
</img>
</div>
>>> soup = BeautifulSoup(sample, 'lxml')
>>> soup.div
<div class="data">
<img height="13" src="/page1/page2/Images/pic.png" width="13"/>
SOME_TEXT
</div>
>>> soup = BeautifulSoup(sample, 'html.parser')
>>> soup.div
<div class="data">
<img height="13" src="/page1/page2/Images/pic.png" width="13">
SOME_TEXT
</img>
</div>
在所有这些情况下,Tag.get_text()
都可以。
答案 1 :(得分:0)
abc="""
<div class="data">
<img src="/page1/page2/Images/pic.png" height="13" width="13">
SOME_TEXT
</div> """
from BeautifulSoup import BeautifulSoup as BS
s=BS(abc,convertEntities=BS.HTML_ENTITIES)
s.text
u'SOME_TEXT'
答案 2 :(得分:0)
from BeautifulSoup import BeautifulSoup
VAR ="""
<div class="data">
<img src="/page1/page2/Images/pic.png" height="13" width="13">
SOME_TEXT
</div>
"""
myAdds = BeautifulSoup(VAR,convertEntities=BeautifulSoup.HTML_ENTITIES)
print myAdds.text