🚀 LinkedIn 爬蟲
輕鬆抓取 LinkedIn 數據,零檢測風險。提取、導出並自動化處理你的 LinkedIn 數據。
🚀 快速開始
安裝
選擇你偏好的安裝方式:
選項 1:使用 pip(推薦用於常規使用)
pip install linkedin-spider
pip install linkedin-spider[cli]
pip install linkedin-spider[mcp]
pip install linkedin-spider[all]
選項 2:使用 uv 進行開發設置
git clone https://github.com/vertexcover-io/linkedin-spider
cd linkedin-spider
uv sync
⚠️ 重要提示
認證方式更新:LinkedIn 加強了反爬蟲機制,暫時影響了基於 Cookie 的認證方式。建議使用電子郵件/密碼認證方式以確保可靠訪問。我們正在積極恢復完整的 Cookie 認證支持。
✨ 主要特性
- 使用高級過濾器(地理位置、人脈類型、當前公司、職位)搜索 LinkedIn 個人資料。
- 根據關鍵詞搜索並提取 LinkedIn 帖子,同時獲取全面的元數據。
- 提取完整的個人資料信息(工作經歷、教育背景、技能、聯繫方式)。
- 獲取公司詳細信息。
- 檢索收到和發出的人脈請求。
- 向個人資料發送人脈請求。
- 獲取對話列表和詳細的對話歷史記錄。
- 內置反檢測和會話管理功能。
💻 使用示例
1. Python 庫
非常適合集成到你現有的 Python 應用程序中:
from linkedin_spider import LinkedinSpider, ScraperConfig
config = ScraperConfig(headless=True, page_load_timeout=30)
scraper = LinkedinSpider(
email="your_email@example.com",
password="your_password",
config=config
)
results = scraper.search_profiles("software engineer", max_results=10)
輸出示例:
[
{
"name": "John Doe",
"title": "Senior Software Engineer at Google",
"location": "San Francisco, CA",
"profile_url": "https://linkedin.com/in/johndoe",
"connections": "500+"
},
{
"name": "Jane Smith",
"title": "Software Engineer at Microsoft",
"location": "Seattle, WA",
"profile_url": "https://linkedin.com/in/janesmith",
"connections": "200+"
}
]
posts = scraper.search_posts("artificial intelligence", max_results=10, scroll_pause=2.0)
輸出示例:
[
{
"author_name": "John Doe",
"author_headline": "AI Research Scientist at OpenAI",
"author_profile_url": "https://linkedin.com/in/johndoe",
"connection_degree": "2nd",
"post_time": "2024-01-15T14:30:00+00:00",
"post_text": "Excited to share our latest research on [large language models](https://example.com/paper)...",
"hashtags": ["#AI", "#MachineLearning", "#Research"],
"links": ["https://example.com/paper"],
"post_url": "https://linkedin.com/feed/update/urn:li:activity:123456789",
"media_urls": ["https://media.licdn.com/dms/image/..."],
"likes_count": 1247,
"comments_count": 89,
"reposts_count": 234,
"comments": [
{
"author_name": "Jane Smith",
"author_profile_url": "https://linkedin.com/in/janesmith",
"comment_text": "Great insights! Looking forward to reading the full paper.",
"comment_time": "2024-01-15T15:45:00+00:00",
"reactions_count": 12
}
]
}
]
profile = scraper.scrape_profile("https://linkedin.com/in/someone")
輸出示例:
{
"name": "John Doe",
"title": "Senior Software Engineer",
"location": "San Francisco, CA",
"about": "Passionate software engineer with 8+ years of experience...",
"experience": [
{
"title": "Senior Software Engineer",
"company": "Google",
"duration": "2021 - Present",
"description": "Leading backend development for search infrastructure..."
}
],
"education": [
{
"school": "Stanford University",
"degree": "BS Computer Science",
"years": "2013 - 2017"
}
],
"skills": ["Python", "Java", "Kubernetes", "AWS"]
}
company = scraper.scrape_company("https://linkedin.com/company/tech-corp")
輸出示例:
{
"name": "TechCorp Inc",
"industry": "Software Development",
"company_size": "1,001-5,000 employees",
"headquarters": "San Francisco, CA",
"founded": "2010",
"specialties": ["Cloud Computing", "AI/ML", "Data Analytics"],
"description": "Leading technology company focused on enterprise solutions...",
"website": "https://techcorp.com",
"follower_count": "45,230"
}
scraper.close()
更多示例請參考:examples
2. 命令行界面 (CLI)
非常適合快速提取數據和編寫腳本:
linkedin-spider-cli search -q "product manager" -n 10 -o results.json --email your@email.com --password yourpassword
linkedin-spider-cli search-posts -k "artificial intelligence" -n 10 -s 2.0 -o posts.json --email your@email.com --password yourpassword
linkedin-spider-cli profile -u "https://linkedin.com/in/johndoe" -o profile.json --email your@email.com --password yourpassword
linkedin-spider-cli company -u "https://linkedin.com/company/openai" -o company.json --email your@email.com --password yourpassword
linkedin-spider-cli connections -n 20 -o connections.json --email your@email.com --password yourpassword
uv run linkedin-spider-cli search -q "product manager" -n 10 -o results.json --email your@email.com --password yourpassword
uv run linkedin-spider-cli search-posts -k "artificial intelligence" -n 10 -s 2.0 -o posts.json --email your@email.com --password yourpassword
uv run linkedin-spider-cli profile -u "https://linkedin.com/in/johndoe" -o profile.json --email your@email.com --password yourpassword
uv run linkedin-spider-cli company -u "https://linkedin.com/company/openai" -o company.json --email your@email.com --password yourpassword
uv run linkedin-spider-cli connections -n 20 -o connections.json --email your@email.com --password yourpassword
💡 使用建議
通常你只需提供一次 --email 和 --password。CLI 會保存你的認證會話,並在後續命令中重複使用,直到會話過期(通常為幾小時或幾天)。你也可以設置 LINKEDIN_EMAIL 和 LINKEDIN_PASSWORD 環境變量,以避免重複輸入。
3. MCP 服務器
在 .env 文件中設置環境變量:
# 認證(選擇一種方式)
LINKEDIN_EMAIL=your_email@example.com
LINKEDIN_PASSWORD=your_password
# 或者
LINKEDIN_COOKIE=your_li_at_cookie_value
# 配置
HEADLESS=true
# 傳輸方式(可選,默認為 stdio)
TRANSPORT=sse
HOST=127.0.0.1
PORT=8000
啟動 MCP 服務器:
linkedin-spider-mcp
linkedin-spider-mcp serve sse --email your@email.com --password yourpassword
linkedin-spider-mcp serve http --host 0.0.0.0 --port 9000 --email your@email.com --password yourpassword
linkedin-spider-mcp serve stdio --email your@email.com --password yourpassword
TRANSPORT=sse linkedin-spider-mcp serve
uv run linkedin-spider-mcp
uv run linkedin-spider-mcp serve sse --email your@email.com --password yourpassword
uv run linkedin-spider-mcp serve http --host 0.0.0.0 --port 9000 --email your@email.com --password yourpassword
uv run linkedin-spider-mcp serve stdio --email your@email.com --password yourpassword
TRANSPORT=sse uv run linkedin-spider-mcp serve
與 Claude Code 集成
claude mcp add linkedin-spider --transport sse <server-url>
與 Claude Desktop 集成
將以下內容添加到你的 Claude Desktop 配置文件中:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
選項 1:使用 Docker(推薦)
Docker 方式提供了可靠的、隔離的執行環境,包含所有依賴項。
首先,構建 Docker 鏡像:
docker build -f Dockerfile.stdio -t linkedin-mcp-stdio .
然後將以下內容添加到你的 Claude Desktop 配置文件中:
{
"mcpServers": {
"linkedin-spider": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"LINKEDIN_EMAIL=your_email@example.com",
"-e",
"LINKEDIN_PASSWORD=your_password",
"-e",
"HEADLESS=true",
"-e",
"TRANSPORT=stdio",
"linkedin-mcp-stdio"
]
}
}
}
Docker 開發與測試
在使用 Docker 進行開發和測試時,你可以使用一個鏡像並配置不同的傳輸方式:
構建 Docker 鏡像
docker build -t linkedin-mcp .
使用不同的傳輸方式運行
SSE 服務器
docker run -p 8000:8000 -e TRANSPORT=sse --env-file .env linkedin-mcp
HTTP 服務器
docker run -p 8000:8000 -e TRANSPORT=http --env-file .env linkedin-mcp
STDIO 服務器
docker run --rm -i -e TRANSPORT=stdio --env-file .env linkedin-mcp
認證方式
方式 1:使用 LinkedIn Cookie
- 在瀏覽器中登錄 LinkedIn。
- 打開開發者工具(F12)。
- 轉到“應用程序/存儲” → “Cookies” → “linkedin.com”。
- 複製
li_at Cookie 的值。
- 在代碼中使用它:
scraper = LinkedinSpider(li_at_cookie="your_cookie_value")
方式 2:使用電子郵件和密碼(推薦)
scraper = LinkedinSpider(
email="your_email@example.com",
password="your_password"
)
🤝 貢獻
我們歡迎貢獻!請參考 CONTRIBUTING.md 獲取貢獻指南。
📄 許可證
本項目採用 MIT 許可證 - 詳情請參閱 LICENSE 文件。
⚠️ 免責聲明
本工具僅供個人使用。請遵守以下規則:
- 遵守 LinkedIn 的服務條款。
- 使用合理的請求速率限制。
- 不要對用戶進行垃圾郵件或騷擾行為。
- 對收集的數據負責。
準備好像專業人士一樣提取 LinkedIn 數據了嗎? 給這個倉庫點個星,開始抓取吧!