使用snscrape抓取X平台推文失败:AttributeError: 'FileFinder'无find_module属性
解决snscrape报错AttributeError: 'FileFinder' object has no attribute 'find_module'
问题原因
这个错误主要是snscrape版本与Python版本不兼容导致的:Python 3.10及以上版本移除了importlib中的find_module方法,而旧版snscrape仍在调用该方法。另外,X(原Twitter)更名后,snscrape的模块路径也有更新,旧的模块引用可能引发问题。
解决步骤
升级snscrape到最新版本
执行以下命令更新到修复了兼容问题的版本:pip install --upgrade snscrape更新模块引用路径
新版本snscrape中,原twitter模块已更名为x,同时TwitterSearchScraper也改为XSearchScraper,需要修改代码中的对应部分:# 替换原来的 import snscrape.modules.twitter as sntwitter import snscrape.modules.x as sntwitter修改后的完整代码示例
import snscrape.modules.x as sntwitter import pandas as pd attributes_container = [] for i,tweet in enumerate(sntwitter.XSearchScraper('from:john').get_items()): if i>100: break attributes_container.append([tweet.date, tweet.likeCount, tweet.sourceLabel, tweet.content]) tweets_df = pd.DataFrame(attributes_container, columns=["Date Created", "Number of Likes", "Source of Tweet", "Tweets"])若仍有问题,使用虚拟环境隔离依赖
全局环境依赖冲突可能导致异常,创建并激活虚拟环境后重新安装依赖:# 创建虚拟环境 python -m venv snscrape-env # Windows系统激活 snscrape-env\Scripts\activate # Linux/macOS系统激活 source snscrape-env/bin/activate # 安装所需依赖 pip install snscrape pandas
内容的提问来源于stack exchange,提问作者Harry Raj
相关产品推荐
相关产品推荐

