You need to enable JavaScript to run this app. Python使用Selenium提取Instagram带k(千)格式粉丝数的实现问题
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Selenium提取Instagram带k(千)格式粉丝数的实现问题

Instagram粉丝数提取可运行实现方案

原代码运行失效主要有两个核心原因:

  • XPath语法残缺:写法中contains(@title)未补全匹配参数、未闭合括号,会直接触发定位解析报错;且Selenium 4+版本已废弃find_element_by_xpath这类旧调用方式,直接调用会抛出属性错误。
  • 类型转换逻辑不匹配:元素可见文本带k类非数字后缀,int()方法无法直接解析包含非数字字符的字符串,必然触发转换异常。

方案1:从title属性提取精确完整数值(推荐)

对应通过属性取数的思路:目标span元素本身就将无缩写的完整粉丝数存储在title属性中,直接读取属性值即可拿到和前端存储完全一致的高精度数值,无需做换算。
实现代码:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 显式等待元素加载完成,避免页面未渲染完成就定位元素
follower_span = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.XPATH, "//li//a/span[contains(@title, '')]"))
)
# 读取title属性的原始值,移除千位分隔逗号后转换为整数
follower_count = int(follower_span.get_attribute("title").replace(",", ""))

该方案不存在缩写换算带来的精度损失,是最稳妥的取数方式

方案2:解析带缩写后缀的可见文本(兜底适用)

如果遇到title属性取值异常的场景,可以通过匹配文本后缀的量级做换算,覆盖k(千)、m(百万)这类Instagram常用的缩写格式:

# 定位元素获取可见文本
raw_text = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.XPATH, "//li//a/span[contains(@title, '')]"))
).text
# 清除文本中的千位分隔符
clean_text = raw_text.replace(",", "")
if clean_text.endswith("k"):
    # 带k后缀的文本,去掉后缀后乘1000换算为整数
    follower_count = int(float(clean_text[:-1]) * 1000)
elif clean_text.endswith("m"):
    # 带m后缀的文本,去掉后缀后乘1000000换算为整数
    follower_count = int(float(clean_text[:-1]) * 1000000)
else:
    # 无后缀的纯数字直接转换
    follower_count = int(clean_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 07:36:04