Skip to main content
Glama
roshtarg-cpu

naukri-job-scraper-mcp

by roshtarg-cpu

🚀 Naukri.com 求人スクレイパー for Apify

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

一意の求人ID

"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
}

プリフィルの利用

一般的な検索用の便利なプリフィルを用意しています:

  • 🔧 ソフトウェアエンジニア - バンガロール

  • 📊 データサイエンティスト - 全インド

  • 📱 プロダクトマネージャー - ムンバイ

  • ⚙️ 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 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 ライセンス - 商用・個人プロジェクトを問わず自由にご利用いただけます。

🤝 コントリビューション

コントリビューションを歓迎します!お気軽にプルリクエストをお送りください。

💬 サポート

  • 📧 問題報告: GitHub で issue を開く

  • 💡 機能リクエスト: 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