2017-04-08 48 views
0

我有以下html,我想获得文本<b>Name in Thai</b>之后是: this is what I wantBeautifulSoup html标记后得到的文本

content = """ 
<html><body><b>Name of Bangkok Bus station:</b> 
<span itemprop="name">Victory Monument</span> 
<meta content="http://www.transitbangkok.com/stations/Bangkok%20Bus/Victory%20Monument" itemprop="url"/> 
<meta content="http://www.transitbangkok.com/stations/Bangkok%20Bus/Victory%20Monument" itemprop="map"/> 
<br/><b>Name in Thai</b>: this is what i want<br/> 
</body></html> 
""" 

我想这如下

soup = BeautifulSoup(content, "lxml") 
soup.find('b').next_sibling 
使用 next_sibling解决方案

但是,我得到了\n作为输出。有没有办法让特定标签后的文本(解释会很棒!)?

回答

3

但是,我得到了\n作为输出。

这是因为find("b")返回第一个<b>标签遇到和你content后的第一个有只有一个换行符。

如果您改为遍历所有<b>标签。然后你会看到next_sibling给你想要的东西:

for tag in soup.find_all("b"): 
    print(tag.text) 
    print(tag.next_sibling) 

输出:

Name of Bangkok Bus station: 


Name in Thai 
: this is what i want 

您可以遍历它们,找到一个具有空间荷兰国际集团next_sibling通过strip()后的东西”。

for tag in soup.find_all("b"): 
    after = tag.next_sibling.strip() 
    if after: 
     print(tag.next_sibling) 
+0

啊,明白了!感谢Vallentin非常明确的解释。 – titipata

+0

不客气!随时将答案标记为已接受。 :) – Vallentin

+0

当然,我必须等待3分钟:) – titipata

相关问题