将任意公开个人资料页面转换为结构化的账户记录——用户名、显示名称、简介、头像、位置、注册日期、关注者数量、外部链接,以及那些在账户改名、改版和删除后仍能唯一锁定账户的稳定内部标识符。
socid_extractor 可解析来自 250 多种方案的 HTML 页面和 API 响应,并返回一个扁平、机器可读的账户字段字典。无需 API 密钥,无需无头浏览器——只需对响应文本调用一个函数即可。
它的用处
extract() 调用——你这边无需为每个平台编写胶水代码。username、fullname、created_at、is_verified 等),因此下游流水线无需 130 个映射。Python:3.10+。
pip install socid-extractor
在工作站上进行干净的 CLI 安装:
pipx install socid-extractor
最新开发版本:
pip install -U git+https://github.com/soxoj/socid-extractor.git
作为 CLI:
$ socid_extractor --url https://www.deviantart.com/muse1908
country: France
created_at: 2005-06-16 18:17:41
gender: female
username: Muse1908
website: www.patreon.com/musemercier
links: ['https://www.facebook.com/musemercier', 'https://www.instagram.com/muse.mercier/', 'https://www.patreon.com/musemercier']
tagline: Nothing worth having is easy...
作为 Python 库:
import requests
import socid_extractor
r = requests.get('https://www.patreon.com/annetlovart')
print(socid_extractor.extract(r.text))
# {'patreon_id': '33913189', 'patreon_username': 'annetlovart',
# 'fullname': 'Annet Lovart',
# 'links': "['https://www.facebook.com/322598031832479', ...]"}
提示 — 批量运行: 传入 --skip-fetch-if-no-url-hint,当 URL 不匹配任何已知站点提示时跳过 HTTP 请求(速度更快,但可能会跳过论坛模板等通用引擎):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
250+ 种方案,覆盖 Maigret 所检查站点中约 2,000 个——完整列表见 METHODS.md。
以下为部分示例(非完整列表):
……以及许多其他站点。
数据示例见 tests/test_e2e.py;解析逻辑见 socid_extractor/schemes.py;字段本体见 FIELDS.md。
开源版 socid_extractor 采用 MIT 许可证,可无限制免费用于商业用途——但页面解析器会随着平台更改其 HTML 和 API 而随时间失效,需要积极维护。
如需严肃的商业使用——托管式提取 API,或维护你的产品所依赖的解析器——请联系:📧 [email protected]
socid_extractor 集成到你的产品中对应以下 SOWEL 技术:
socid_extractor 读取个人资料页面,而 ShareTrace 接收分享链接(TikTok、Instagram、ChatGPT、Discord、Telegram 等),并还原出创建或转发该链接的人,部分分享令牌可离线解码。若只想试用,无需安装任何东西:可使用社区运营的 Telegram 机器人 或 Web UI。从 pyproject.toml 安装测试附加依赖,然后运行 pytest:
pip install '.[test]' # pytest, pytest-rerunfailures, pytest-xdist
python3 -m pytest tests/test_e2e.py -n 10 -k 'not cookies' -m 'not github_failed and not rate_limited'
如果你还想要 flake8 / mypy / black(CI 使用的完整集合),请改用 pip install '.[dev]'。
每个新方案都必须在 tests/test_e2e.py 中有一个 e2e 测试,访问真实的 URL/API。使用内联夹具的单元测试(tests/test_socid_improvements.py)也是必需的,但不能替代 e2e 覆盖。详情请参阅 docs/testing-and-ci.md。
开发者文档(架构、模块、CI)位于 docs/。
如果你想添加新方案或修复任何问题,请参阅贡献指南。