Skip to main content
Glama
roshtarg-cpu

naukri-job-scraper-mcp

by roshtarg-cpu

🚀 Apify용 Naukri.com 채용 정보 스크래퍼

Apify Actor Python 3.11+ License: MIT

Naukri.com 전문 채용 정보 스크래퍼 - 고급 브라우저 자동화와 리지덴셜 프록시를 통해 포괄적인 채용 정보를 추출합니다. AI 에이전트, ChatGPT 플러그인, Claude 통합, MCP 기반 자동화 워크플로우에 완벽합니다! 🤖

🎯 주요 기능

✨ 포괄적인 데이터 추출

  • 채용 ID, 제목, 회사명

  • 급여 범위 및 보상 정보

  • 경력 요구 사항(최소/최대 연차)

  • 근무지 및 근무 형태 정보

  • 필요 기술 및 기술 스택

  • 전체 채용 공고 설명

  • 채용 공고 직접 URL

🔒 안티봇 보호

  • 현실적인 핑거프린팅을 갖춘 Camoufox 브라우저 자동화

  • Apify를 통한 리지덴셜 프록시 지원

  • 인간과 유사한 행동 시뮬레이션

  • 프록시 신뢰성을 위한 GeoIP 매칭

🛡️ 프로덕션 준비 완료

  • 재시도 기능을 갖춘 견고한 오류 처리

  • 우아한 폴백(누락된 필드는 null 처리)

  • Apify 데이터셋으로 실시간 데이터 푸시

  • 포괄적인 로깅 및 모니터링

🤖 AI 친화적

  • Claude, ChatGPT, MCP 에이전트용으로 설계

  • 깔끔하고 구조화된 JSON 출력

  • 데이터 신선도를 위한 타임스탬프 추적

  • AI 워크플로우와 쉬운 통합

Related MCP server: iCIMS Careers API

📊 출력 스키마

각 채용 공고에는 다음 필드가 포함됩니다:

필드

유형

설명

예시

jobId

string

고유 채용 식별자

"290524001234"

title

string

채용 제목

"Senior Software Engineer"

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

채용 공고 설명

"We are looking for..."

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
}

프리필 사용

일반적인 검색을 위한 편리한 프리필을 제공합니다:

  • 🔧 Software Engineer - Bangalore

  • 📊 Data Scientist - All India

  • 📱 Product Manager - Mumbai

  • ⚙️ DevOps Engineer - Pune

  • 💻 Full Stack Developer - Hyderabad

🤖 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 Framework

  • 프록시: Apify Residential Proxies

아키텍처

┌─────────────────┐
│  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 License - 상업용 또는 개인 프로젝트에 자유롭게 사용하세요.

🤝 기여

기여를 환영합니다! Pull Request를 자유롭게 제출해 주세요.

💬 지원

  • 📧 이슈: GitHub에서 이슈를 열어주세요

  • 💡 기능 요청: GitHub Issues를 통해 제출

  • 📚 문서: Apify Documentation

🎉 AI로 제작됨

이 actor는 Claude AI의 도움으로 제작되었으며 AI 에이전트 워크플로우, MCP 통합, ChatGPT 자동화에 최적화되어 있습니다. 지능형 채용 검색 어시스턴트 구축에 완벽합니다! 🚀


AI 자동화 커뮤니티를 위해 ❤️로 제작됨

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search, filter, and extract job listings from LinkedIn using an automated headless browser with semantic AI filtering and deduplication.
    10 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables users to retrieve live job postings from any iCIMS career site, providing structured data including title, requisition ID, employer, locations, employment type, dates, salary, and apply links.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural-language job search and aggregation from multiple recruitment websites with zero configuration, providing filtered results and standardized output for AI assistants.
    64 npm
    ISC