Glassdoor 是最好的平台之一,它为求职者和想要雇用他们的人提供了广泛的信息,包括薪资信息、雇主评论和求职申请。在本指南中,我们将介绍使用 Python 和 Playwright 从 Glassdoor 搜刮职位列表的过程。Playwright 在这里至关重要,因为 Glassdoor 采用了强大的反僵尸措施,可以标记并阻止传统的搜索库。有了 Playwright,我们就可以模拟真实浏览器并加入代理,帮助我们绕过这些检测系统。
由于 Glassdoor 具有强大的反抓取机制,使用请求等库直接请求可能会导致 IP 屏蔽或验证码问题。Playwright 允许我们自动化浏览器,使我们的交互更像人机交互。通过添加代理和浏览器标头,我们可以进一步避免检测。
要开始使用,您需要安装 Playwright 和用于 HTML 解析的 lxml 库。安装方法如下
pip install playwright lxml
playwright install
从使用 Playwright 加载页面到提取任务详细信息并将数据保存到 CSV 文件,我们将逐一介绍每一个步骤。
首先,用代理设置 Playwright 以连接 Glassdoor。这有助于防止被拦截,并允许浏览器像真实用户访问网站一样加载页面。
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()
加载页面后,使用 lxml 解析 HTML 内容并提取相关职位信息。以下是如何解析每个职位列表的职位名称、地点、薪资和其他详细信息:
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():
# 使用代理服务器设置 Playwright 浏览器,以避免被检测到
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())
完整代码的解释:
在搜索 Glassdoor 或其他网站时,必须遵循负责任的搜索实践:
当你知道如何使用 Python 和 Playwright 搜刮 Glassdoor 的数据时,你就能轻松提高收集职位列表的能力。这种技术与使用代理和适当的标头相结合,可以有效消除被 Glassdoor 屏蔽的风险。您还需要注意道德搜索政策,以防止 Glassdoor 服务器崩溃。只要遵守这些措施,您现在就可以从 Glassdoor 获取并处理有用的就业信息,供自己或公司使用。
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
评论: 0