BeautifulSoup用replace删标签报NoneType不可调用错误,如何提取span文本
错误原因
你报错是因为变量调用错误:你将span标签转换为字符串后赋值给了mmBizSyariah,但后续执行replace()操作时调用的依然是未转字符串的BeautifulSoup Tag对象mBizSyariah,该对象自带的replace是标签替换方法,不是你需要的字符串替换方法,传参不符合要求就会触发'NoneType' object is not callable报错。
正确解法
不需要手动做字符串替换删除标签,BeautifulSoup内置了直接提取标签内文本的方法,调用.text或.get_text()即可一步拿到目标内容,修正后代码如下:
import requests from bs4 import BeautifulSoup header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/87.0.4280.88 Safari/537.36 ' } mBizLink = requests.get('https://www.malaysiastock.biz/Corporate-Infomation.aspx?securityCode=7164', headers=header) mBizParser = BeautifulSoup(mBizLink.text, 'html.parser') # 找到span标签后直接提取文本,strip()用于清除前后多余空白 mBizSyariah = mBizParser.find('label', {'id' : 'ctl17_lbShariah'}).find('span').text.strip() print(mBizSyariah)
如果你坚持要用字符串替换的方式实现,只要把替换操作的对象换成你转好字符串的变量即可:
mBizSyariah_tag = mBizParser.find('label', {'id' : 'ctl17_lbShariah'}).find('span') mBizSyariah_str = str(mBizSyariah_tag) mBizSyariah = mBizSyariah_str.replace('<span> ', '').replace(' </span>', '') print(mBizSyariah)
内容的提问来源于stack exchange,提问作者Ilham Learning
相关产品推荐
相关产品推荐

