爬取网站商品价格时触发TypeError: 'str' object is not callable报错求助
报错解决方法
错误根源
TypeError: 'str' object is not callable 报错的直接原因如下:
- 代码中
soup.find(...).text返回的是字符串类型,你已经把字符串赋值给了newprice变量 - 循环中
print(newprice())给字符串变量加了括号,Python会将括号识别为调用函数的操作,字符串不属于可调用对象,因此触发类型错误。
同时你的现有逻辑还存在功能缺陷:页面请求、价格提取逻辑写在循环外部,只会执行一次,就算修复语法错误,循环也只会反复打印同一个固定价格,无法实现每秒刷新获取最新价格的需求。
修复后完整代码
import requests from bs4 import BeautifulSoup import time url = "https://www.roblox.com/catalog/20573078/Shaggy" loop_flag = 1 while loop_flag == 1: # 每次循环重新请求页面获取最新数据 response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') newprice = soup.find("span", {"class": "text-robux-lg wait-for-i18n-format-render"}).text # 直接打印字符串变量,不要加括号 print(newprice) time.sleep(1)
核心修改点
- 移除
print语句中newprice后的括号,直接打印字符串变量 - 将页面请求、解析、价格提取逻辑移到循环内部,保证每次循环都能拿到最新的价格数据
- 调整休眠语句位置到打印之后,符合常规执行逻辑,你也可以根据自身需求调整位置
内容的提问来源于stack exchange,提问作者aaaaa
相关产品推荐
相关产品推荐

