ग्लासडोर सबसे अच्छे प्लेटफार्मों में से एक है जो दोनों लोगों के लिए नौकरियों की मांग करने और उन्हें काम पर रखने के लिए, वेतन जानकारी, नियोक्ता समीक्षा और नौकरी के अनुप्रयोगों को शामिल करने के लिए एक विस्तृत श्रृंखला प्रदान करता है। इस गाइड में, हम पायथन और नाटककार का उपयोग करके ग्लासडोर से जॉब लिस्टिंग को स्क्रैप करने की प्रक्रिया से गुजरेंगे। प्ले राइट यहां आवश्यक है क्योंकि ग्लासडोर मजबूत एंटी-बॉट उपायों को नियुक्त करता है, जो पारंपरिक स्क्रैपिंग पुस्तकालयों को ध्वजांक और अवरुद्ध कर सकता है। नाटककार के साथ, हम एक वास्तविक ब्राउज़र का अनुकरण कर सकते हैं और प्रॉक्सी शामिल कर सकते हैं, जिससे हमें इन डिटेक्शन सिस्टम को बायपास करने में मदद मिल सकती है।
ग्लासडोर के मजबूत एंटी-स्क्रैपिंग तंत्र के कारण, अनुरोधों जैसे पुस्तकालयों के साथ प्रत्यक्ष अनुरोध आईपी अवरुद्ध या कैप्चा चुनौतियों का कारण बन सकते हैं। नाटककार हमें एक ब्राउज़र को स्वचालित करने की अनुमति देता है, जिससे हमारी बातचीत अधिक मानव-जैसी हो जाती है। परदे के पीछे और ब्राउज़र हेडर जोड़कर, हम आगे पता लगाने से बच सकते हैं।
आरंभ करने के लिए, आपको HTML पार्सिंग के लिए प्लेराइट और LXML लाइब्रेरी स्थापित करना होगा। आप उन्हें निम्नानुसार स्थापित कर सकते हैं:
pip install playwright lxml
playwright install
हम प्रत्येक चरण के माध्यम से चलेंगे, नाटककार के साथ पृष्ठ को लोड करने से लेकर नौकरी के विवरण निकालने और डेटा को 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 link', timeout=60000)
content = await page.content()
await browser.close()
return content
# पृष्ठ सामग्री को पुनः प्राप्त करने के लिए फ़ंक्शन को कॉल करें
html_content = await scrape_job_listings()
पृष्ठ लोड करने के बाद, 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)
एक बार जब हम नौकरी का विवरण निकाल लेते हैं, तो हम उन्हें आसान डेटा विश्लेषण के लिए 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())
पूर्ण कोड की व्याख्या:
ग्लासडोर या किसी अन्य वेबसाइट को स्क्रैप करते समय, जिम्मेदार स्क्रैपिंग प्रथाओं का पालन करना आवश्यक है:
जब आप जानते हैं कि पायथन और नाटककार का उपयोग करके ग्लासडोर के डेटा को कैसे परिमार्जन किया जाए, तो आप आसानी से नौकरी लिस्टिंग एकत्र करने की अपनी क्षमता को बढ़ाएंगे। यह तकनीक, जब परदे के पीछे और उपयुक्त हेडर के उपयोग के साथ संयुक्त है, ग्लासडोर द्वारा अवरुद्ध होने के जोखिम को समाप्त करने में प्रभावी है। आपको ग्लासडोर के सर्वर को दुर्घटनाग्रस्त करने से रोकने के लिए नैतिक स्क्रैपिंग नीतियों पर भी ध्यान देने की आवश्यकता है। इन उपायों को ध्यान में रखते हुए, अब आप अपने स्वयं के उपयोग या अपनी कंपनी के लिए ग्लासडोर से उपयोगी रोजगार की जानकारी के साथ -साथ उपयोगी रोजगार की जानकारी भी दे सकते हैं।
टिप्पणियाँ: 0