解析美丽的汤

时间:2017-05-03 17:09:06

标签: python html parsing beautifulsoup

我想解析一个看起来像这样的HTML代码:

<div>
<span>Current Status</span>FINAL DECISION </div>
<div>
<span>Applicant</span>GC Planning Partnership Ltd </div>
<div>
<span>Agent</span>GC Planning Partnership Ltd </div>
<div>
<span>Wards</span>Springfield Ward </div>
<div>
<span>Location Co ordinates</span>Easting 534379 Northing 187690 </div>
<div>
<span>Parishes</span> </div>
<div>
<span>OS Mapsheet</span>  </div>
<div>

现在,我不想获取介于<span>标签之间的文本,而是希望获得紧随其后的信息。从上面的例子中,我想提取像#&#34;最终决定&#34;,&#34; Springfield Ward&#34;或类似的。我是非常新的解析HTML,我不知道如何到达那里。

我会非常高兴任何提示或想法!

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果您希望span元素后面的文字带有特定文字,您可以先按文字找到span元素,然后获取.next_sibling

soup.find("span", text="Current Status").next_sibling

如果您希望循环遍历所有span元素,并且对于每个span元素,请获取下一个文本兄弟:

from bs4 import BeautifulSoup, NavigableString

for span in soup.find_all("span"):
    next_text = span.next_sibling
    if isinstance(next_text, NavigableString):
        print(next_text)