कैसे पायथन का उपयोग करके ग्लासडोर डेटा को परिमार्जन करें

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

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

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

आवश्यकताएँ

आरंभ करने के लिए, आपको HTML पार्सिंग के लिए प्लेराइट और LXML लाइब्रेरी स्थापित करना होगा। आप उन्हें निम्नानुसार स्थापित कर सकते हैं:


pip install playwright lxml
playwright install

स्क्रैपिंग ग्लासडोर जॉब लिस्टिंग

हम प्रत्येक चरण के माध्यम से चलेंगे, नाटककार के साथ पृष्ठ को लोड करने से लेकर नौकरी के विवरण निकालने और डेटा को CSV फ़ाइल में सहेजने तक।

चरण 1। ब्राउज़र सेट करना और अनुरोध करना

सबसे पहले, ग्लासडोर से कनेक्ट करने के लिए एक प्रॉक्सी के साथ नाटककार सेट करें। यह अवरुद्ध होने से रोकने में मदद करता है और ब्राउज़र को पृष्ठ को लोड करने की अनुमति देता है जैसे कि कोई वास्तविक उपयोगकर्ता साइट पर जा रहा था।


from playwright.async_api import async_playwright
from lxml.html import fromstring

async def scrape_job_listings():
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=False,
            proxy={"server": '', 'username': '', 'password': ''}
        )
        page = await browser.new_page()
        await page.goto('https link', timeout=60000)
        content = await page.content()
        await browser.close()
        return content

# पृष्ठ सामग्री को पुनः प्राप्त करने के लिए फ़ंक्शन को कॉल करें
html_content = await scrape_job_listings()

चरण 2। HTML को पार्स करना और डेटा निकालना

पृष्ठ लोड करने के बाद, HTML सामग्री को पार्स करने और प्रासंगिक नौकरी की जानकारी निकालने के लिए LXML का उपयोग करें। यहां बताया गया है कि प्रत्येक नौकरी लिस्टिंग के लिए नौकरी का शीर्षक, स्थान, वेतन और अन्य विवरण कैसे पार्स करें:


parser = fromstring(html_content)
job_posting_elements = parser.xpath('//li[@data-test="jobListing"]')

jobs_data = []
for element in job_posting_elements:
    job_title = element.xpath('.//a[@data-test="job-title"]/text()')[0]
    job_location = element.xpath('.//div[@data-test="emp-location"]/text()')[0]
    salary = ' '.join(element.xpath('.//div[@data-test="detailSalary"]/text()')).strip()
    job_link = element.xpath('.//a[@data-test="job-title"]/@href')[0]
    easy_apply = bool(element.xpath('.//div[@data-role-variant="featured"]'))
    company = element.xpath('.//span[@class="EmployerProfile_compactEmployerName__LE242"]/text()')[0]
    
    job_data = {
        'company': company,
        'job_title': job_title,
        'job_location': job_location,
        'job_link': job_link,
        'salary': salary,
        'easy_apply': easy_apply
    }
    jobs_data.append(job_data)

चरण 3। सीएसवी फ़ाइल में डेटा सहेजना

एक बार जब हम नौकरी का विवरण निकाल लेते हैं, तो हम उन्हें आसान डेटा विश्लेषण के लिए CSV फ़ाइल में सहेज सकते हैं।


import csv

with open('glassdoor_job_listings.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=['company', 'job_title', 'job_location', 'job_link', 'salary', 'easy_apply'])
    writer.writeheader()
    writer.writerows(jobs_data)

पूरा कोड


import csv
from playwright.async_api import async_playwright
from lxml.html import fromstring

async def scrape_job_listings():
    # पता लगाने से बचने के लिए प्रॉक्सी के साथ नाटककार ब्राउज़र सेटअप करें
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=False,
            proxy={"server": '', 'username': '', 'password': ''}
        )
        page = await browser.new_page()
        await page.goto('https://www.glassdoor.com/Job/united-states-software-engineer-jobs-SRCH_IL.0,13_IN1_KO14,31.htm', timeout=60000)
        
        # पृष्ठ सामग्री को पुनः प्राप्त करें और ब्राउज़र बंद करें
        content = await page.content()
        await browser.close()
        
        # LXML के साथ सामग्री को पार्स करें
        parser = fromstring(content)
        job_posting_elements = parser.xpath('//li[@data-test="jobListing"]')
        
        # प्रत्येक नौकरी लिस्टिंग के लिए डेटा निकालें
        jobs_data = []
        for element in job_posting_elements:
            job_title = element.xpath('.//a[@data-test="job-title"]/text()')[0]
            job_location = element.xpath('.//div[@data-test="emp-location"]/text()')[0]
            salary = ' '.join(element.xpath('.//div[@data-test="detailSalary"]/text()')).strip()
            job_link = "https://www.glassdoor.com" + element.xpath('.//a[@data-test="job-title"]/@href')[0]
            easy_apply = bool(element.xpath('.//div[@data-role-variant="featured"]'))
            company = element.xpath('.//span[@class="EmployerProfile_compactEmployerName__LE242"]/text()')[0]
            
            job_data = {
                'company': company,
                'job_title': job_title,
                'job_location': job_location,
                'job_link': job_link,
                'salary': salary,
                'easy_apply': easy_apply
            }
            jobs_data.append(job_data)
    
        # डेटा को CSV फ़ाइल में सहेजें
        with open('glassdoor_job_listings.csv', 'w', newline='', encoding='utf-8') as file:
            writer = csv.DictWriter(file, fieldnames=['company', 'job_title', 'job_location', 'job_link', 'salary', 'easy_apply'])
            writer.writeheader()
            writer.writerows(jobs_data)

# स्क्रैपिंग फ़ंक्शन चलाएं
import asyncio
asyncio.run(scrape_job_listings())

पूर्ण कोड की व्याख्या:

  1. प्रॉक्सी के साथ ब्राउज़र सेटअप: कोड नाटककार के साथ एक ब्राउज़र सत्र शुरू करता है, जिसमें मानव ब्राउज़िंग व्यवहार की नकल करने के लिए एक प्रॉक्सी शामिल है। हेडलेस = गलत सेटिंग ब्राउज़र विंडो को खुले रहने में सक्षम बनाती है, जो आगे बॉट का पता लगाने में मदद कर सकती है।
  2. जॉब लिस्टिंग पेज पर नेविगेट करना: स्क्रिप्ट संयुक्त राज्य अमेरिका में सॉफ्टवेयर इंजीनियरिंग नौकरियों के लिए ग्लासडोर जॉब लिस्टिंग URL का दौरा करती है।
  3. सामग्री को पार्स करना: HTML पार्सिंग के लिए LXML का उपयोग करके नौकरी डेटा निकाला जाता है। हम नौकरी का शीर्षक, स्थान, वेतन, नौकरी लिंक, कंपनी का नाम और यदि यह एक आसान लागू नौकरी है।
  4. CSV को सहेजना: सभी डेटा निकालने के बाद, स्क्रिप्ट इसे प्रत्येक विशेषता के लिए कॉलम के साथ CSV फ़ाइल, Glassdoor_job_listings.csv से सहेजता है।

ग्लासडोर की सेवा की शर्तों का सम्मान करना

ग्लासडोर या किसी अन्य वेबसाइट को स्क्रैप करते समय, जिम्मेदार स्क्रैपिंग प्रथाओं का पालन करना आवश्यक है:

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

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

टिप्पणियाँ:

0 टिप्पणियाँ