使用BeautifulSoup如何提取父标签内文本 排除子标签的多余字符
问题原因
你当前使用的Tag.text属性会递归提取当前标签及所有子孙标签的文本内容,因此会把嵌套子<span>里的q也一并提取,最终得到拼接后的结果。
解决方案
只需指定提取父span标签的直接文本节点,不递归查询子标签内的内容即可,两种常用实现方式如下:
方案1:非递归查找直接文本节点(更通用)
通过recursive=False参数限定只查找当前标签的直接子节点,不会深入嵌套的子标签内提取内容:
price = item.find('span', class_='nowrap') # 仅提取当前标签的直接文本内容,忽略子标签 price_x = price.find(text=True, recursive=False).strip() print(price_x)
方案2:直接取第一个直接子节点
你当前的HTML结构里,父span的第一个直接子节点就是目标文本,直接索引取值即可:
price = item.find('span', class_='nowrap') price_x = price.contents[0].strip() print(price_x)
两种方案运行后均可输出你需要的2 633结果。
内容的提问来源于stack exchange,提问作者Vlad Vladov
相关产品推荐
相关产品推荐

