Skip to main content
Glama
roshtarg-cpu

naukri-job-scraper-mcp

by roshtarg-cpu

🚀 Naukri.com 职位抓取器(适用于 Apify)

Apify Actor Python 3.11+ License: MIT

专业的 Naukri.com 职位抓取器 —— 通过先进的浏览器自动化和住宅代理提取全面的职位列表。非常适合 AI 代理、ChatGPT 插件、Claude 集成以及基于 MCP 的自动化工作流!🤖

🎯 功能特性

全面的数据提取

  • 职位 ID、职位名称、公司名称

  • 薪资范围与薪酬信息

  • 经验要求(最低/最高年限)

  • 地点与工作场所详情

  • 所需技能与技术栈

  • 完整职位描述

  • 职位直接链接

🔒 反机器人防护

  • Camoufox 浏览器自动化,具备真实指纹模拟

  • 通过 Apify 提供住宅代理支持

  • 模拟人类行为

  • GeoIP 匹配确保代理真实性

🛡️ 生产级就绪

  • 稳健的错误处理与重试机制

  • 优雅降级(缺失字段返回 null)

  • 实时数据推送至 Apify 数据集

  • 全面的日志记录与监控

🤖 AI 友好

  • 专为 Claude、ChatGPT 和 MCP 智能体构建

  • 干净、结构化的 JSON 输出

  • 时间戳跟踪确保数据新鲜度

  • 易于与 AI 工作流集成

Related MCP server: JobSpy MCP Server

📊 输出结构

每个职位列表包含以下字段:

字段

类型

描述

示例

jobId

string

唯一职位标识符

"290524001234"

title

string

职位名称

"高级软件工程师"

companyName

string

公司名称

"Tech Corp India"

salary

string|null

薪资信息

"15-25 Lacs P.A."

experienceMin

integer|null

最低经验要求(年)

3

experienceMax

integer|null

最高经验要求(年)

5

location

string|null

职位地点

"Bangalore, Pune"

skills

array|null

所需技能

["Python", "AWS", "Docker"]

jobDescription

string|null

职位描述

"我们正在寻找..."

jobUrl

string|null

职位发布直接链接

"https://www.naukri.com/..."

scrapedAt

string

抓取时间戳(ISO 8601)

"2024-08-21T10:30:00.000Z"

🚀 快速开始

在 Apify 平台上运行

  1. 从本仓库创建新的 Actor

  2. 配置输入参数:

    • searchQuery:职位名称或关键词(例如 "software engineer")

    • location:城市名称(例如 "bangalore")或留空以搜索所有地点

    • maxResults:要抓取的职位数量(1-500)

  3. 运行 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: integer

Python 集成

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 自动化社区倾心打造 ❤️

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search and analyze LinkedIn jobs with advanced filters, salary requirements, and market insights through natural language.
    21
    MIT

View all related MCP servers

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…

View all MCP Connectors

Latest Blog Posts

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