
⛏️ Maigretの背後にある抽出エンジン:あらゆるプロフィールURLを150以上のサイトにわたる構造化されたOSINTレコードに変換します
あらゆる公開プロフィールページを構造化されたアカウントレコードに変換します — ユーザー名、表示名、自己紹介、アバター、所在地、参加日、フォロワー数、外部リンク、そして名前変更、デザイン変更、削除を越えてアカウントを一意に特定する安定した内部IDを抽出します。
socid_extractor は130以上のプラットフォームの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
130以上のスキーム — 完全なリストは METHODS.md をご覧ください。
一部を抜粋:
…その他多数。
データ例は tests/test_e2e.py を、解析ロジックは socid_extractor/schemes.py を、フィールドオントロジーは FIELDS.md を参照してください。
オープンソースの socid_extractor はMITライセンスであり、商用利用は制限なく無料です。ただし、ページパーサーはプラットフォームのHTMLやAPIの変更に伴い壊れる可能性があり、積極的なメンテナンスが必要です。
本格的な商用利用 — メンテナンス済みのプライベートパーサープラグインパックやホスト型抽出API — に関心のある方は、📧 [email protected] までご連絡ください。
socid_extractor をあなたの製品に統合以下の SOWEL テクニックに対応:
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]' を使用してください。
新しいスキームには必ずe2eテスト を tests/test_e2e.py に追加し、実際のURL/APIに対して実行してください。インラインフィクスチャを使用したユニットテスト(tests/test_socid_improvements.py)も必要ですが、e2eカバレッジの代わりにはなりません。詳細は docs/testing-and-ci.md を参照してください。
開発者向けドキュメント(アーキテクチャ、モジュール、CI)は docs/ にあります。
新しいスキームを追加したり修正したい場合は、貢献ガイド をご覧ください。