You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理推特爬取数据时报错:'NoneType' object is not callable

解决TypeError: 'NoneType' object is not callable问题

嘿,这个错误我见得挺多的,咱们一步步拆解问题,找到根源:

最可能的两个触发原因

  • 把None值当成函数调用了
    比如你可能写了print(stamp_print()),但stamp_print本身是None(不是函数);或者在获取时间戳时,BeautifulSoup没找到目标元素返回了None,你却对它执行了.text()操作——注意!.text是属性不是方法,加括号就会触发错误。
  • 变量名和内置函数/模块冲突
    要是你不小心把变量命名为print(比如print = None),之后再调用print(stamp_print)时,就会调用这个被你覆盖成None的变量,自然报错。

具体排查和修复步骤

步骤1:修正时间戳获取代码

先补全你代码里缺失的页面解析部分,再规范元素查找逻辑:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import re

my_url = "https://twitter.com/realDonaldTrump?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

# 解析HTML内容
page_soup = soup(page_html, "html.parser")

# 查找带datetime属性的time标签(推特时间戳常用这个结构)
timestamp_elem = page_soup.find('time', attrs={'datetime': True})

if timestamp_elem is not None:
    # 获取文本内容:用.text属性,不要加括号
    stamp_print = timestamp_elem.text.strip()
    print(stamp_print)
    # 也可以直接获取更精准的datetime属性值
    stamp_datetime = timestamp_elem.get('datetime')
    print(stamp_datetime)
else:
    print("未找到时间戳元素,可能页面结构更新或触发反爬了")

步骤2:检查变量名冲突

快速扫一遍代码,有没有把print、soup这类内置/导入的名称当成自定义变量用,比如:

# 错误示例:覆盖了内置print函数
print = None
# 后续调用print就会报错
print(stamp_print)

如果有这种情况,把变量名改成my_print这类不会冲突的名称即可。

额外提醒:推特的反爬限制

推特现在很多内容是JavaScript动态加载的,直接用urllib获取的静态HTML可能不包含你要找的时间戳元素,导致find返回None。如果是这种情况,你可能需要用Selenium模拟浏览器加载页面后再提取内容。

内容的提问来源于stack exchange,提问作者beagLord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:23:26