Python使用BeautifulSoup提取特定span标签对应状态文本的方法咨询
你已经定位到了包含Status标识的span节点,目标文本是该span的同级后续文本节点,直接通过节点属性提取即可。
方案1:补全原有代码逻辑
from bs4 import BeautifulSoup as soup Page_soup = soup(Page_html, "html.parser") extra_info = Page_soup.find('td', attrs={'class': 'borderClass'}) span_html = extra_info.select('span') status_text = "" for span in span_html: if 'Status:' in span.get_text(): # 提取span后的相邻文本,去除首尾换行、空格等冗余字符 status_text = span.next_sibling.strip() break print(status_text)
运行后输出结果即为Finished Airing。
方案2:更简洁的直接定位写法
无需循环遍历所有span,用BeautifulSoup内置的选择器直接定位目标节点:
from bs4 import BeautifulSoup as soup Page_soup = soup(Page_html, "html.parser") extra_info = Page_soup.find('td', attrs={'class': 'borderClass'}) # 直接匹配文本为Status:的dark_text类span status_span = extra_info.select_one('span.dark_text:-soup-contains("Status:")') if status_span: status_text = status_span.next_sibling.strip() print(status_text)
注意:如果使用的是4.10.0之前版本的BeautifulSoup,需要将
:-soup-contains替换为:contains。
内容的提问来源于stack exchange,提问作者rkx74656
相关产品推荐
相关产品推荐

