पायथन के साथ लिंक्डइन डेटा को स्क्रैप करने के लिए गाइड

टिप्पणियाँ: 0

लिंक्डइन डेटा को स्क्रैप करना कई कारणों से अविश्वसनीय रूप से मूल्यवान हो सकता है:

  • जॉब मार्केट एनालिसिस: जॉब लिस्टिंग में रुझानों का विश्लेषण करें, जैसे कि सबसे इन-डिमांड कौशल और उद्योग;
  • भर्ती: काम पर रखने की रणनीतियों को सूचित करने के लिए नौकरी पोस्टिंग पर डेटा इकट्ठा करना;
  • प्रतियोगी अनुसंधान: हायरिंग पैटर्न और प्रतियोगियों की रणनीतियों की निगरानी करें।

लेख महत्वपूर्ण तकनीकों और रणनीतियों पर जोर देगा, जिसमें पहले स्थान पर प्रॉक्सी और हेडर के माध्यम से पता लगाने से बचने का महत्व शामिल है। अनुरोध लाइब्रेरी का उपयोग HTTP अनुरोध करने के लिए किया जाएगा जबकि LXML को HTML सामग्री को पार्स करने के लिए नियोजित किया जाएगा।

पर्यावरण की स्थापना

शुरू करने से पहले, सुनिश्चित करें कि आपने अपनी मशीन पर पायथन स्थापित किया है।

PIP का उपयोग करके आवश्यक पुस्तकालयों को स्थापित करें:


pip install requests
pip install lxml

स्क्रैपर के साथ शुरू हो रहा है

यहाँ पायथन का उपयोग करके लिंक्डइन जॉब लिस्टिंग को स्क्रैप करने के लिए एक व्यापक कोड उदाहरण है:

आयात पुस्तकालय

हमें कई पायथन पुस्तकालयों की आवश्यकता होगी:

  • requests: वेब पेजों को पुनः प्राप्त करने के लिए HTTP अनुरोध करने के लिए।
  • LXML: HTML सामग्री को पार्स करने के लिए।
  • CSV: CSV फ़ाइल में निकाले गए डेटा को लिखने के लिए।

import requests
from lxml import html
import csv
import random

नौकरी खोज URL को परिभाषित करें

लिंक्डइन जॉब सर्च URL को परिभाषित करके शुरू करें जिसे आप स्क्रैप करना चाहते हैं।


url = 'https link'

उपयोगकर्ता-एजेंट स्ट्रिंग्स और प्रॉक्सी

लिंक्डइन को प्रभावी ढंग से स्क्रैप करने के लिए, एक वास्तविक ब्राउज़र से अनुरोधों की नकल करने के लिए सही हेडर, विशेष रूप से उपयोगकर्ता-एजेंट हेडर का उपयोग करना महत्वपूर्ण है।


user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]

आधुनिक-दिन प्रॉक्सी प्रदाता अक्सर आंतरिक रोटेशन का समर्थन करते हैं, जिसका अर्थ है कि वे स्वचालित रूप से आपके लिए आईपी पते को घुमाते हैं। यह एक सूची से मैन्युअल रूप से प्रॉक्सी का चयन करने की आवश्यकता को समाप्त करता है। हालाँकि, चित्रण उद्देश्यों के लिए, यहाँ कैसे है कि आप यदि आवश्यक हो तो प्रॉक्सी रोटेशन को संभाल लेंगे:


proxies = {
    'http': random.choice(proxies),
    'https': random.choice(proxies)
}

अनुरोधों के लिए हेडर

सफल लिंक्डइन स्क्रैपिंग हेडर के सही सेटअप पर टिका है जो एक वास्तविक ब्राउज़र के व्यवहार का अनुकरण करता है। उचित रूप से कॉन्फ़िगर किए गए हेडर न केवल एंटी-बॉट सुरक्षा प्रणालियों को दरकिनार करने में सहायता करते हैं, बल्कि आपकी स्क्रैपिंग गतिविधियों को अवरुद्ध करने की संभावना को भी कम कर देते हैं।


headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'dnt': '1',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Linux"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
}

डेटा स्टोरेज इनिशियलाइज़ करें

नौकरी पोस्टिंग जानकारी को प्रभावी ढंग से एकत्र करने और संग्रहीत करने के लिए, आपको डेटा स्टोर को शुरू करके शुरू करना चाहिए। पायथन में, इसमें आमतौर पर एक खाली सूची बनाना शामिल होता है। यह सूची एक स्टोरेज कंटेनर के रूप में काम करेगी जहां आप नौकरी विवरण जोड़ सकते हैं क्योंकि वे HTML सामग्री से निकाले जाते हैं। यह विधि यह सुनिश्चित करती है कि जानकारी व्यवस्थित रूप से एकत्र की जाती है और आगे की प्रक्रिया या विश्लेषण के लिए आसानी से सुलभ है।

job_details = []

HTML सामग्री को पार्सिंग

HTTP GET अनुरोध भेजने के बाद, अगला कदम LXML लाइब्रेरी का उपयोग करके HTML सामग्री को पार्स करना है। यह हमें HTML संरचना के माध्यम से नेविगेट करने और उस डेटा की पहचान करने की अनुमति देगा जिसे हम निकालना चाहते हैं।


# IP प्राधिकरण विधि के साथ यादृच्छिक उपयोगकर्ता-एजेंट और प्रॉक्सी सेट करें
headers['user-agent'] = random.choice(user_agents)
proxies = {
    'http': IP:PORT,
    'https': IP:PORT
}

# URL को HTTP प्राप्त करें अनुरोध भेजें
response = requests.get(url=url, headers=headers, proxies=proxies)
parser = html.fromstring(response.content)

नौकरी डेटा निकालना

एक बार HTML सामग्री पार्स हो जाने के बाद, हम XPATH क्वेरी का उपयोग करके शीर्षक, कंपनी का नाम, स्थान और जॉब URL जैसे विशिष्ट नौकरी विवरण निकाल सकते हैं। इन विवरणों को एक शब्दकोश में संग्रहीत किया जाता है और एक सूची में जोड़ा जाता है।


# HTML सामग्री से नौकरी का विवरण निकालें
for job in parser.xpath('//ul[@class="jobs-search__results-list"]/li'):
    title = ''.join(job.xpath('.//div/a/span/text()')).strip()
    company = ''.join(job.xpath('.//div/div[2]/h4/a/text()')).strip()
    location = ''.join(job.xpath('.//div/div[2]/div/span/text()')).strip()
    job_url = job.xpath('.//div/a/@href')[0]
    
    job_detail = {
        'title': title,
        'company': company,
        'location': location,
        'job_url': job_url
    }
    job_details.append(job_detail)

CSV के लिए डेटा सहेजें

जॉब डेटा एकत्र करने के बाद, इसे CSV फ़ाइल में सहेजें।


with open('linkedin_jobs.csv', 'w', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['title', 'company', 'location', 'job_url']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for job_detail in job_details:
        writer.writerow(job_detail)

पूरा कोड

यहाँ पूरा कोड है, ऊपर के सभी वर्गों को मिलाकर:


from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.by import By
import csv

# उपयोगकर्ता नाम और पासवर्ड के साथ प्रॉक्सी सर्वर पता निर्दिष्ट करें
proxy_address = ""
proxy_username = ""
proxy_password = ""

# प्रॉक्सी और प्रमाणीकरण के साथ क्रोम विकल्प सेट करें
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')

# सेलेनियम-वायर के साथ एक WebDriver उदाहरण बनाएं
driver = wiredriver.Chrome(options=chrome_options)

url = 'https link'

# सेलेनियम-तार की बढ़ी हुई क्षमताओं के साथ अपने सेलेनियम स्वचालन का प्रदर्शन करें
driver.get(url)

job_details = []

all_elements = driver.find_elements(By.XPATH,
                                   '//*[@id="main-content"]/section/ul/li')

for i in all_elements:
   title = i.find_element(By.XPATH,
                          './/div/div/h3').text
   company = i.find_element(By.XPATH, './/div/div[2]/h4/a').text
   location = i.find_element(By.XPATH, './/div/div[2]/div/span').text
   job_url = i.find_element(By.XPATH,
                            './/div/a').get_attribute('href')

   job_detail = {
       'title': title,
       'company': company,
       'location': location,
       'job_url': job_url
   }
   job_details.append(job_detail)

with open('linkedin_jobs.csv', 'w', newline='', encoding='utf-8') as csvfile:
   fieldnames = ['title', 'company', 'location', 'job_url']
   writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
   writer.writeheader()
   for job_detail in job_details:
       writer.writerow(job_detail)

driver.quit()

अनुरोधों और LXML पुस्तकालयों के साथ पायथन का उपयोग करके लिंक्डइन से डेटा निकालना नौकरी बाजार का विश्लेषण करने और कर्मियों की भर्ती करने के लिए एक शक्तिशाली तरीका प्रदान करता है। एक चिकनी स्क्रैपिंग प्रक्रिया को सुनिश्चित करने के लिए, उच्च गति वाले डेटासेंटर प्रॉक्सी का उपयोग किया जाता है, साथ ही एक उच्च ट्रस्ट कारक के साथ आईएसपी प्रॉक्सी, जो स्वचालित कार्यों पर ब्लॉकों के जोखिम को कम करता है।

टिप्पणियाँ:

0 टिप्पणियाँ