naukri-job-scraper-mcp
🚀 Naukri.com 职位抓取器(适用于 Apify)
专业的 Naukri.com 职位抓取器 —— 通过先进的浏览器自动化和住宅代理提取全面的职位列表。非常适合 AI 代理、ChatGPT 插件、Claude 集成以及基于 MCP 的自动化工作流!🤖
🎯 功能特性
✨ 全面的数据提取
职位 ID、职位名称、公司名称
薪资范围与薪酬信息
经验要求(最低/最高年限)
地点与工作场所详情
所需技能与技术栈
完整职位描述
职位直接链接
🔒 反机器人防护
Camoufox 浏览器自动化,具备真实指纹模拟
通过 Apify 提供住宅代理支持
模拟人类行为
GeoIP 匹配确保代理真实性
🛡️ 生产级就绪
稳健的错误处理与重试机制
优雅降级(缺失字段返回 null)
实时数据推送至 Apify 数据集
全面的日志记录与监控
🤖 AI 友好
专为 Claude、ChatGPT 和 MCP 智能体构建
干净、结构化的 JSON 输出
时间戳跟踪确保数据新鲜度
易于与 AI 工作流集成
Related MCP server: JobSpy MCP Server
📊 输出结构
每个职位列表包含以下字段:
字段 | 类型 | 描述 | 示例 |
| string | 唯一职位标识符 |
|
| string | 职位名称 |
|
| string | 公司名称 |
|
| string|null | 薪资信息 |
|
| integer|null | 最低经验要求(年) |
|
| integer|null | 最高经验要求(年) |
|
| string|null | 职位地点 |
|
| array|null | 所需技能 |
|
| string|null | 职位描述 |
|
| string|null | 职位发布直接链接 |
|
| string | 抓取时间戳(ISO 8601) |
|
🚀 快速开始
在 Apify 平台上运行
从本仓库创建新的 Actor
配置输入参数:
searchQuery:职位名称或关键词(例如 "software engineer")location:城市名称(例如 "bangalore")或留空以搜索所有地点maxResults:要抓取的职位数量(1-500)
运行 Actor 并从数据集中访问结果
输入示例
{
"searchQuery": "data scientist",
"location": "bangalore",
"maxResults": 100
}使用预填充选项
我们为常见搜索提供了便捷的预填充选项:
🔧 软件工程师 - 班加罗尔
📊 数据科学家 - 全印度
📱 产品经理 - 孟买
⚙️ DevOps 工程师 - 浦那
💻 全栈开发人员 - 海得拉巴
🤖 AI 集成示例
Claude Desktop (MCP)
通过 Apify MCP 服务器直接从 Claude Desktop 使用此 Actor:
{
"apify": {
"actorId": "your-actor-id",
"input": {
"searchQuery": "machine learning engineer",
"location": "bangalore",
"maxResults": 50
}
}
}ChatGPT Actions
使用 Apify 的 API 与 ChatGPT 集成:
openapi: 3.0.0
paths:
/v2/acts/{actorId}/runs:
post:
summary: Scrape Naukri.com jobs
parameters:
- name: actorId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
searchQuery:
type: string
location:
type: string
maxResults:
type: integerPython 集成
from apify_client import ApifyClient
client = ApifyClient('your-apify-token')
# Start the actor
run = client.actor('your-actor-id').call(run_input={
'searchQuery': 'python developer',
'location': 'mumbai',
'maxResults': 100
})
# Fetch results
dataset_items = client.dataset(run['defaultDatasetId']).list_items().items
for job in dataset_items:
print(f"{job['title']} at {job['companyName']}")
print(f"Location: {job['location']}")
print(f"Salary: {job['salary']}")
print(f"Skills: {', '.join(job['skills'] or [])}")
print(f"URL: {job['jobUrl']}\n")Node.js 集成
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'your-apify-token' });
// Start the actor
const run = await client.actor('your-actor-id').call({
searchQuery: 'react developer',
location: 'bangalore',
maxResults: 50
});
// Fetch results
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(job => {
console.log(`${job.title} at ${job.companyName}`);
console.log(`Location: ${job.location}`);
console.log(`Skills: ${job.skills?.join(', ')}`);
});🔧 本地开发
前提条件
Python 3.11+
Docker(用于容器化测试)
设置
# Clone the repository
git clone <your-repo-url>
cd naukri-job-scraper-mcp
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export APIFY_TOKEN=your_apify_token
# Run locally
python -m src使用 Apify CLI 进行测试
# Install Apify CLI
npm install -g apify-cli
# Login to Apify
apify login
# Run the actor locally
apify run📋 技术细节
技术栈
语言:Python 3.11
浏览器自动化:Camoufox(基于 Firefox 的隐身浏览器)
HTML 解析:BeautifulSoup4 + lxml
平台:Apify Actor 框架
代理:Apify 住宅代理
架构
┌─────────────────┐
│ Apify Platform │
└────────┬────────┘
│
┌────▼─────┐
│ Actor │
└────┬─────┘
│
┌────▼────────┐
│ Camoufox │ ◄──── Residential Proxy
│ Browser │
└────┬────────┘
│
┌────▼──────────┐
│ Naukri.com │
│ (Next.js SPA)│
└────┬──────────┘
│
┌────▼─────────┐
│ BeautifulSoup│
│ Parser │
└────┬─────────┘
│
┌────▼─────────┐
│ Apify Dataset│
└──────────────┘错误处理
重试逻辑:3 次尝试,采用指数退避策略
优雅失败:字段缺失时返回
null而非崩溃代理回退:住宅代理失败时继续运行(不使用代理)
日志记录:提供全面的错误日志以辅助调试
🌟 使用场景
🎯 就业市场研究:分析薪资趋势与技能需求
🤖 AI 驱动的职位匹配:将数据输入 LLM 以提供个性化推荐
📈 招聘分析:跟踪招聘趋势与公司动态
🔔 职位提醒:构建自动化通知系统
💼 职业规划:了解各行业的经验要求
🛠️ 自定义
修改搜索参数
编辑 src/main.py 以添加自定义筛选条件:
# Add custom filters
experience_filter = actor_input.get('experienceRange', '')
salary_filter = actor_input.get('salaryMin', '')扩展数据提取
编辑 src/parser.py 以提取更多字段:
# Add new field extraction
posted_date = _clean_text(job_card.select_one('.posted-date').get_text())
job_data['postedDate'] = posted_date📝 许可证
MIT 许可证 —— 可自由用于商业或个人项目。
🤝 贡献
欢迎贡献!请随时提交 Pull Request。
💬 支持
📧 问题:在 GitHub 上提交 issue
💡 功能请求:通过 GitHub Issues 提交
📚 文档:Apify 文档
🎉 由 AI 构建
此 Actor 在 Claude AI 的协助下构建,并针对 AI 智能体工作流、MCP 集成和 ChatGPT 自动化进行了优化。非常适合构建智能求职助手!🚀
为 AI 自动化社区倾心打造 ❤️
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and retrieve real-time job listings from the Technopark job portal using Puppeteer web scraping. Users can search by role or keyword to obtain job details including company name, closing date, and posted date.
- AlicenseNot gradedqualityAmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.15MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and analyze LinkedIn jobs with advanced filters, salary requirements, and market insights through natural language.21MIT
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/roshtarg-cpu/naukri-job-scraper-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server