使用BeautifulSoup查找网页指定文本失败返回未找到问题求助
问题原因
BeautifulSoup的find_all(string="python")默认是完全匹配模式,只有当某个文本节点的全部内容和字符串python完全一致(包括大小写、前后无其他字符)时才会被命中。python.org官网的文本里的相关字符大多是首字母大写的Python,或者前后带有空格、标点等其他内容,不存在完全等于全小写python的独立文本节点,因此返回空结果。- 你给出的原始代码还缺少
requests库的导入语句,直接运行会报命名错误。
修复方案
方案1:用正则实现模糊匹配(支持忽略大小写)
如果需要匹配所有包含python字符(不区分大小写)的文本节点,可以结合正则表达式实现:
import requests import re from bs4 import BeautifulSoup response = requests.get("https://www.python.org/") soup = BeautifulSoup(response.text, "lxml") # re.IGNORECASE 表示忽略大小写匹配 find_python = soup.find_all(string=re.compile("python", re.IGNORECASE)) if find_python: print('found python') else: print("python not found")
方案2:直接判断页面全文是否包含目标字符
如果只需要判断存在性不需要拿到具体匹配的节点,可以直接提取整个页面的文本转小写后判断,代码更简洁:
import requests from bs4 import BeautifulSoup response = requests.get("https://www.python.org/") soup = BeautifulSoup(response.text, "lxml") page_text = soup.text.lower() if "python" in page_text: print('found python') else: print("python not found")
内容的提问来源于stack exchange,提问作者BS4
相关产品推荐
相关产品推荐

