使用bs4解析HTML时如何提取指定标签文本并判断内容是否匹配?
实现方案
你可以直接在find方法中添加文本匹配参数,不需要单独赋值再对比,一行就能完成判断逻辑:
# 找到class为title、且文本完全匹配目标内容的元素,存在则直接退出 if soup.find(class_="title", string="Xin lỗi! trang bạn tìm kiếm không tồn tại."): exit()
如果担心目标元素的文本前后存在多余空格、换行符导致匹配失败,可以先提取文本后去空白再对比,写法如下:
title_ele = soup.find(class_="title") if title_ele and title_ele.text.strip() == "Xin lỗi! trang bạn tìm kiếm không tồn tại.": exit()
相关说明
find()方法和你之前用的find_all()逻辑一致,区别是find()只返回第一个匹配到的元素,不需要你从find_all()返回的列表里取索引,更适配你这里只有一个匹配结果的场景find()如果匹配不到符合条件的元素会返回None,在if判断中会被识别为False,不需要额外做非空判断也不会报错- 如果需要模糊匹配文本(比如只要包含指定内容就算符合条件),可以搭配正则模块使用:
import re # 只要class为title的元素包含目标字符串就满足判断条件 if soup.find(class_="title", string=re.compile("Xin lỗi! trang bạn tìm kiếm không tồn tại")): exit()
内容的提问来源于stack exchange,提问作者Nazfull
相关产品推荐
相关产品推荐

