使用美丽汤从上一个包含的下一个范围获取文本



我无法让BeautifulSoup返回我需要的文本。
我使用过滤器来获取我需要的<div>,但我无法将文本放入我需要的文本。
鉴于下面的html结构,获取ISCED代码"值"的最佳方法是什么。还有其他class_="内联..."在 BS 对象中,因此不可能只找到 class_=inline_value 并且 html 中可能有多个 ISCED 代码

 <span class="inline_label">
   ISCED:
  </span>
  <span class="inline_value">
   0410: Business &amp; Admin not defined
  </span>

任何帮助非常感谢。

您可以使用正则表达式来执行此操作:

In [22]: import re
In [23]: from bs4 import BeautifulSoup
In [24]: soup = BeautifulSoup('''<span class="inline_label">
   ....:    ISCED:
   ....:   </span>
   ....:   <span class="inline_value">
   ....:    0410: Business &amp; Admin not defined
   ....:   </span>''', 'lxml')
   ....:   
In [25]: for el in soup(text=re.compile(r'ISCED')):
   ....:     print(el.parent.find_next_sibling().get_text())
   ....:     
   0410: Business & Admin not defined

In [26]: for el in soup(class_=re.compile(r'inline')):
   ....:     print(el.get_text(strip=True))
   ....:
ISCED:
0410: Business & Admin not defined

最新更新