How to scrape Glassdoor - reviews and salary data with Python and proxies - DataImpulse

يوضح هذا الدليل كيفية تجريف Glassdoor باستخدام Python لجمع مراجعات الشركات وبيانات الرواتب المجمعة، والأهم من ذلك حدود ما هو قانوني وتقني. يعد Glassdoor هدفاً صعباً، إذ يعرض المحتوى عبر JavaScript ويدافع بقوة ضد البوتات ويحجب كثيراً من بياناته خلف جدار التسجيل. لذلك يحتاج مجرّف Glassdoor إلى متصفح حقيقي مثل Playwright وبروكسيات سكنية وقاعدة واضحة للبقاء ضمن الحدود السليمة: التزم بالصفحات العامة، وقلّل ما تخزنه، ولا تتجاوز تسجيل الدخول أبداً، واعلم أن شروط Glassdoor تقيّد الوصول الآلي من الأساس.

أنا Andrii Byzov، مدير تسويق جزئي متخصص في AI-Native وأبني مسارات لبيانات الويب. ستجد أدناه ما يمكنك وما لا يمكنك تجريفه من Glassdoor، والتنبيهات القانونية أولاً، وأنماط شيفرة عملية لصفحات المراجعات والرواتب العامة.


حقائق أساسية

  • يعرض Glassdoor محتواه عبر JavaScript ويحظى بحماية مشددة؛ إن استخدام requests وحده لا يكفي غالباً، وعادةً ما تحتاج إلى متصفح بلا واجهة مثل Playwright.
  • تقيّد شروط Glassdoor الوصول الآلي من دون إذن خطي، لذا قد يخالف حتى التجريف العام وأنت غير مسجل الدخول شروط الاستخدام. جدار تسجيل الدخول خطر إضافي وليس الحد الوحيد.
  • المراجعات محتوى ينشئه المستخدمون وشبه شخصي، وGlassdoor نفسه يذكر أن إخفاء الهوية غير مضمون. قلّل ما تحتفظ به، ولا تخزّن الهويات، ولا تعِد نشر نص المراجعات.
  • تساعد البروكسيات السكنية عند العمل على نطاق واسع، إذ يقيّد Glassdoor المعدل ويرصد عناوين IP الخاصة بمراكز البيانات سريعاً، لكن لا توجد أداة تضمن الوصول أو تجعل التجريف متوافقاً.
  • تعامل مع هذا المحتوى على أنه تعليمي. ولأي استخدام تجاري أو واسع النطاق، احصل على إذن Glassdoor ومشورة قانونية.

ما الذي يمكنك وما الذي لا يمكنك تجريفه من Glassdoor

رسم هذا الحد أولاً هو ما يجعل مشروع تجريف Glassdoor قابلاً للدفاع عنه قدر الإمكان، وهو القرار الأهم في أي سير عمل لتجريف Glassdoor.

  • الأقل خطراً، عام وغير شخصي: التقييم العام للشركة ونطاقات الرواتب المجمعة حسب الدور، وهي الأرقام الرئيسية التي يعرضها Glassdoor من دون حساب.
  • استخدمه بحذر، فهو عام لكنه حساس: مقتطفات المراجعات، مثل التقييم ونص الإيجابيات والسلبيات، عامة لكنها ينشئها المستخدمون وشبه شخصية. إذا جمعتها، فقلّلها: احتفظ بالمؤشر المجمع، واحذف الهويات، ولا تعِد نشر النص مطلقاً.
  • محظور: أي شيء خلف جدار تسجيل الدخول أو التسجيل، وهويات المراجعين أو أي بيانات شخصية، وإعادة نشر محتوى المراجعات. لا تتجاوز بوابة “سجّل الدخول لقراءة المزيد”.
تجريف Glassdoor: ما هو مقبول وما هو محظور. الأقل خطراً هو التقييمات العامة ونطاقات الرواتب المجمعة؛ والمحظور هو كل ما خلف تسجيل الدخول، وهويات المراجعين، وإعادة نشر نص المراجعات، أو تجاوز بوابة تسجيل الدخول

هل تجريف Glassdoor قانوني؟

يعتمد الأمر على الظروف، والتحفظات هنا أهم منها في معظم المواقع. تقيّد شروط خدمة Glassdoor الوصول الآلي من دون إذن خطي، لذا قد يخالف حتى تجريف الصفحات العامة وأنت غير مسجل الدخول شروط الاستخدام. جدار تسجيل الدخول خطر إضافي وليس الخطر الوحيد. فضلاً عن ذلك، يُحجب كثير من المحتوى بتسجيل الدخول، والمراجعات محتوى ينشئه المستخدمون ويحمل اعتبارات حقوق النشر والخصوصية. النهج الأقل خطراً هو البقاء غير مسجل الدخول، وتفضيل البيانات العامة المجمعة مثل التقييمات ونطاقات الرواتب، والتقليل من البيانات وعدم تخزين البيانات الشخصية، واحترام robots.txt وحدود المعدل، وعدم إعادة نشر نص المراجعات، والحصول على إذن Glassdoor لأي استخدام تجاري. للاطلاع على الإطار الكامل، راجع دليلنا حول ما إذا كان تجريف الويب قانونياً. هذه معلومات عامة وليست استشارة قانونية؛ اطلب استشارة مختص قبل أي مشروع تجاري لبيانات Glassdoor.


الخطوة 1: إعداد بيئتك

لأن Glassdoor يعتمد بكثافة على JavaScript، يشغّل المجرّف متصفحاً حقيقياً عبر Playwright بدلاً من إرسال طلبات HTTP خام.



# Glassdoor renders content with JavaScript and defends hard, so use a
# real browser (Playwright) rather than plain requests.
pip install playwright beautifulsoup4
playwright install chromium




الخطوة 2: تحميل صفحة عامة من Glassdoor

شغّل Chromium بلا واجهة عبر بروكسي سكني وحمّل URL لمراجعات شركة عام من دون تسجيل الدخول. ينفذ المتصفح JavaScript الخاص بالصفحة كي تظهر المراجعات قبل قراءة HTML.



from playwright.sync_api import sync_playwright

# Route the browser through a residential proxy (see Step 4)
PROXY = {"server": "http://gw.dataimpulse.com:823",
         "username": "YOUR_DI_LOGIN", "password": "YOUR_DI_PASSWORD"}

def get_html(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(proxy=PROXY, headless=True)
        page = browser.new_page(locale="en-US")
        page.goto(url, wait_until="networkidle", timeout=60000)
        html = page.content()
        browser.close()
        return html

# A PUBLIC company reviews page (do not log in)
html = get_html("https://www.glassdoor.com/Reviews/Example-Company-Reviews-E12345.htm")

















الخطوة 3: تجريف مراجعات Glassdoor العامة

لتجريف مراجعات Glassdoor، حلّل بطاقات المراجعات الظاهرة للعامة إلى حقول منظمة، مثل التقييم والعنوان والإيجابيات والسلبيات والتاريخ. تكون أسماء الفئات في Glassdoor مبهمة وتتغير كثيراً، لذا تحقّق من المحددات الحالية في DevTools؛ سمات data-test أدناه توضيحية.



from bs4 import BeautifulSoup

def parse_reviews(html):
    """Parse the publicly visible reviews. Selectors change often —
    confirm the current ones in DevTools before relying on them."""
    soup = BeautifulSoup(html, "html.parser")
    reviews = []
    for card in soup.select('[data-test="review-details"]'):
        def t(sel):
            el = card.select_one(sel)
            return el.get_text(strip=True) if el else None
        reviews.append({
            "rating": t('[data-test="review-rating"]'),
            "title":  t('[data-test="review-title"]'),
            "pros":   t('[data-test="pros"]'),
            "cons":   t('[data-test="cons"]'),
            "date":   t('[data-test="review-date"]'),
        })
    return reviews

print(parse_reviews(html)[:3])





















الخطوة 4: تجريف بيانات الرواتب المجمعة

تعرض صفحات الرواتب في Glassdoor أرقاماً مجمعة حسب الدور، أي الوسيط للراتب الأساسي والنطاقات، لا بيانات الأفراد. هذه الرؤية العامة المجمعة هي ما ينبغي جمعه، فاجلبها بالطريقة ذاتها.



def parse_salaries(html):
    """Parse aggregated, public salary ranges (role-level, not individuals)."""
    soup = BeautifulSoup(html, "html.parser")
    rows = []
    for row in soup.select('[data-test="salary-row"]'):
        def t(sel):
            el = row.select_one(sel)
            return el.get_text(strip=True) if el else None
        rows.append({
            "job_title": t('[data-test="job-title"]'),
            "base_pay":  t('[data-test="median-base"]'),
            "range":     t('[data-test="pay-range"]'),
        })
    return rows

salary_html = get_html("https://www.glassdoor.com/Salaries/example-company-salaries-E12345.htm")
print(parse_salaries(salary_html)[:3])

















الخطوة 5: التعامل مع دفاعات Glassdoor ضد البوتات

يستخدم Glassdoor منظومة صارمة لمكافحة البوتات، تشمل تقييم سمعة IP وتقييد المعدل وتحديات كشف البوتات. لا توجد طريقة مضمونة للتجاوز، كما أن المتصفح مع البروكسيات لا يجعل التجريف متوافقاً، لكن أمرين يقللان الحظر في الصفحات العامة: سياق متصفح حقيقي برؤوس واقعية، وبروكسيات سكنية متناوبة كي لا يُستنفد أي IP منفرد. تُرصد عناوين IP الخاصة بمراكز البيانات سريعاً هنا؛ وتبدو بروكسيات DataImpulse السكنية بسعر $1/GB، ومتناوبة، ومتاحة في 195 دولة، كمستخدمين حقيقيين. نظّم وتيرة طلباتك؛ فإغراق Glassdoor بالطلبات يؤدي إلى حظرك ويثير مشكلات حمل الخادم التي تضعف موقفك القانوني.



# Rotate residential IPs and look like a real browser.
# Use a fresh session id per run so each crawl gets a clean IP.
PROXY = {"server": "http://gw.dataimpulse.com:823",
         "username": "YOUR_DI_LOGIN__cr.us;sid.run1",
         "password": "YOUR_DI_PASSWORD"}

def fetch(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(proxy=PROXY, headless=True)
        ctx = browser.new_context(
            locale="en-US",
            user_agent=("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                        "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"),
            viewport={"width": 1366, "height": 900},
        )
        page = ctx.new_page()
        page.goto(url, wait_until="networkidle")  # pace requests; Glassdoor rate-limits
        html = page.content()
        browser.close()        # always clean up the browser
        return html




















الخطوة 6: تصدير بياناتك

احفظ البيانات العامة المجمعة التي جمعتها بتنسيقي JSON وCSV. أبقِ البيانات الشخصية خارجاً؛ خزّن التقييمات والنص المجمع لا هويات المراجعين.



import json, csv

reviews = parse_reviews(html)

with open("glassdoor_reviews.json", "w", encoding="utf-8") as f:
    json.dump(reviews, f, indent=2, ensure_ascii=False)

if reviews:
    with open("glassdoor_reviews.csv", "w", newline="", encoding="utf-8") as f:
        w = csv.DictWriter(f, fieldnames=reviews[0].keys())
        w.writeheader(); w.writerows(reviews)











الأسئلة الشائعة

هل تجريف Glassdoor قانوني؟

يعتمد الأمر على الظروف، والتحفظات حقيقية: تقيّد شروط Glassdoor الوصول الآلي من دون إذن خطي، لذا قد يخالف حتى تجريف الصفحات العامة شروط الاستخدام، وكثير من الموقع محجوب بتسجيل الدخول، والمراجعات محتوى شبه شخصي ينشئه المستخدمون ومحمي بحقوق النشر. إن مضيت قدماً، فالنهج الأقل خطراً هو الاقتصار على البيانات العامة المجمعة، مثل التقييمات ونطاقات الرواتب، وأنت غير مسجل الدخول، مع تقليل البيانات وعدم إعادة النشر، والحصول على إذن أو استشارة للاستخدام التجاري. هذه معلومات عامة وليست استشارة قانونية، راجع دليل قانونية تجريف الويب.

هل يمكنني تجريف Glassdoor من دون تسجيل الدخول؟

نعم، وينبغي أن تبقى غير مسجل الدخول. يعرض Glassdoor بعض تقييمات الشركات ومقتطفات المراجعات وبيانات الرواتب المجمعة للعامة. التجريف خلف تسجيل الدخول يعني مخالفة الشروط التي تقبلها عند تسجيل الدخول، وهي المنطقة عالية المخاطر. اجمع فقط ما يظهر من دون حساب.

لماذا لا يعمل نص requests برمجي بسيط مع Glassdoor؟

يعرض Glassdoor المحتوى عبر JavaScript ويشغّل كشف البوتات، لذلك يعيد طلب HTTP عادي بيانات قليلة قابلة للاستخدام أو صفحة تحدٍّ. تحتاج إلى متصفح بلا واجهة، مثل Playwright أو ما يشبهه، ينفذ JS الخاص بالصفحة، إضافة إلى بروكسيات سكنية لتجنب رصدك.

هل أحتاج إلى بروكسيات لتجريف Glassdoor؟

نعم، إذا تجاوزت عدداً قليلاً من الصفحات. يقيّد Glassdoor المعدل ويرصد عناوين IP الخاصة بمراكز البيانات سريعاً، لذا يُحظر IP واحد بسرعة. توزّع البروكسيات السكنية المتناوبة الطلبات على عناوين IP كثيرة لمستخدمين حقيقيين وتتيح لك الجمع على نطاق واسع من دون تفعيل الدفاعات.

هل يمكنني تجريف رواتب الأفراد أو أسماء المراجعين؟

لا، ولا ينبغي لك ذلك. بيانات الرواتب في Glassdoor مخصصة للقراءة بشكل مجمع، مثل الوسيط والنطاقات حسب الدور، وهويات المراجعين بيانات شخصية تقع ضمن نطاق تنظيمي. اجمع مؤشرات مجمعة وغير شخصية فقط.


الخلاصة

يمكن تجريف Glassdoor لكنه مقيّد: فهو موقع يعرض عبر JavaScript ومحمي جيداً، وتُحجب فيه معظم القيمة، لذا يحتاج مجرّف Glassdoor العامل إلى متصفح بلا واجهة وبروكسيات سكنية متناوبة، وإلى قاعدة صارمة لجمع البيانات العامة المجمعة وغير الشخصية فقط من دون تجاوز تسجيل الدخول. اضبط الجانب التقني باستخدام Playwright مع البروكسيات السكنية، والتزم بالمسار القابل للدفاع عنه، وراجع دليلنا عن أفضل البروكسيات لتجريف الويب للتعرّف إلى الإعداد الأوسع.

آخر تحديث: 25 يونيو 2026.



Share article: