如何从嵌套span标签中提取"Part-time, Full-time"与"On Campus"?
提取目标文本的几种实用方法
给定你提供的HTML结构,这里有几个直接可行的提取思路:
方法1:父元素文本拆分法
先拿到外层SecondaryFacts容器的完整文本,会得到Master / Part-time, Full-time / On Campus,接着用/做分隔符把字符串拆成列表,去掉每个元素的前后空格后,第2项和第3项就是你要的内容。
用Python BeautifulSoup实现的示例代码:from bs4 import BeautifulSoup html = '<span class="SecondaryFacts DesktopOnlyBlock" data-v-3c87c7ca="">Master <span class="Divider" data-v-3c87c7ca="">/</span> Part-time, Full-time <span class="Divider" data-v-3c87c7ca="">/</span> On Campus</span>' soup = BeautifulSoup(html, 'html.parser') parent_full_text = soup.find('span', class_='SecondaryFacts').get_text() split_parts = [part.strip() for part in parent_full_text.split('/') if part.strip()] part_time_full_time = split_parts[1] on_campus = split_parts[2]方法2:借助Divider的兄弟节点
每个Divider标签后面紧跟着的就是目标文本,定位到Divider元素后,直接取它的下一个兄弟文本节点,再去掉多余空格就行。
示例代码:dividers = soup.find_all('span', class_='Divider') part_time_full_time = dividers[0].next_sibling.strip() on_campus = dividers[1].next_sibling.strip()方法3:直接选取父元素的子文本节点
外层SecondaryFacts的子节点里,除了两个Divider标签,剩下的就是文本节点。筛选出非空的文本节点后,取第2和第3个就是目标内容。
示例代码:parent_container = soup.find('span', class_='SecondaryFacts') valid_text_nodes = [node.strip() for node in parent_container.contents if isinstance(node, str) and node.strip()] part_time_full_time = valid_text_nodes[1] on_campus = valid_text_nodes[2]
内容的提问来源于stack exchange,提问作者bilbao
相关产品推荐
相关产品推荐

