Glassdoor是一座寶貴數據的金礦——員工評論、公司評級、工資範圍和麪試見解。對求職者來說,它是研究潛在僱主的工具;對企業來說,它是分析競爭對手或監控自己聲譽的一種方式;對數據分析師來說,它是趨勢分析的豐富數據集。但問題是:手動收集這些數據既乏味又耗時,而且容易出錯。
這就是Glassdoor評論刮刀Python的用武之地。Python是網絡抓取的完美語言——這要歸功於它的輕量級庫(請求、美麗湯、硒)和易於閱讀的語法。自定義Python刮刀可讓您自動化大規模提取Glassdoor評論的過程,節省您數小時的手動工作。

但是有一個問題:Glassdoor有嚴格的防刮取措施。如果你從一個IP地址發送太多請求,你會被阻止——突然結束你的刮取工作流程。這是任何構建Glassdoor評論刮刀的人最大的痛點。解決方案是什麼?使用可靠的代理服務來輪換IP地址並避免檢測。
在本指南中,我們將引導您使用Python構建一個功能齊全的Glassdoor評論刮刀。我們將涵蓋所有內容:設置環境、編寫核心抓取代碼、處理動態內容,以及——最重要的——集成代理(IPFLY,一種無客戶端、高可用性的代理)以繞過Glassdoor的IP禁令。最後,您將擁有一個可以安全高效地提取評論的刮刀,您可以複製粘貼和自定義代碼。
刮玻璃門前你需要知道的
在深入研究代碼之前,讓我們介紹一些關鍵的先決條件以避免問題:
1.法律和道德考慮
Glassdoor的用戶使用條款禁止未經授權的抓取。始終:1)僅抓取公共數據(避免員工聯繫方式等私人信息)。2)限制您的請求率(不要使Glassdoor的服務器過載)。3)將數據用於個人/教育目的(商業用途可能需要Glassdoor的許可)。4)尊重robots. txt(查看受限頁面https://www.glassdoor.com/robots.txt)。
2、Glassdoor的防刮措施
Glassdoor使用多種防刮技術來阻止機器人。您的刮刀需要繞過這些:
IP阻止:最常見的-從一個IP發送多個請求會觸發禁止。
用戶代理檢測:具有通用用戶代理的機器人被標記(使用真實瀏覽器的用戶代理)。
動態內容:許多評論使用JavaScript動態加載(需要Selenium或Playwright等工具)。
驗證碼:很少用於低容量抓取,但如果檢測到您可能會出現(通過代理輪換解決)。
3.您需要的工具和庫
啓動前安裝這些Python庫(使用pip install[庫]):
請求:用於向Glassdoor發送HTTP請求。用於解析超文本標記語言和提取數據。selenium:用於處理動態JavaScript內容(對Glassdoor至關重要)。熊貓:用於在CSV/Excel文件中存儲抓取的評論。webdriver-Manager:用於管理Selenium瀏覽器驅動程序(無需手動下載)。
使用Python構建一個基本的Glassdoor評論刮板
我們將從一個基本的刮擦器開始,它從單個Glassdoor公司頁面中提取評論。此刮擦器使用Selenium來處理動態內容(因爲Glassdoor通過JavaScript加載評論)並使用美容湯進行解析。
第1步:導入所需的庫
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pandas as pd
import time
第2步:配置Selenium和基本刮板設置
def init_driver():
# Configure Chrome options to mimic a real browser
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)
# Initialize Chrome driver
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=chrome_options
)
driver.implicitly_wait(10) # Wait 10s for elements to load
return driver
def scrape_glassdoor_reviews(driver, company_url, num_pages=1):
# Store scraped data
reviews_data = []
for page in range(1, num_pages + 1):
# Navigate to the company reviews page (with page number)
page_url = f"{company_url}?page={page}"
driver.get(page_url)
time.sleep(2) # Wait for page to load (adjust if needed)
# Parse page source with BeautifulSoup
soup = BeautifulSoup(driver.page_source, "html.parser")
# Find all review containers (inspect Glassdoor's HTML to get the correct class)
review_containers = soup.find_all("div", class_="gdReview")
if not review_containers:
print(f"No reviews found on page {page}. Exiting...")
break
# Extract data from each review
for review in review_containers:
try:
# Review title
title = review.find("h2", class_="reviewTitle").text.strip() if review.find("h2", class_="reviewTitle") else "N/A"
# Rating (1-5 stars)
rating = review.find("span", class_="ratingNumber").text.strip() if review.find("span", class_="ratingNumber") else "N/A"
# Review text
review_text = review.find("div", class_="reviewText").text.strip() if review.find("div", class_="reviewText") else "N/A"
# Author details (job title, location)
author_details = review.find("span", class_="authorInfo").text.strip() if review.find("span", class_="authorInfo") else "N/A"
# Date of review
date = review.find("time", class_="date")["datetime"] if review.find("time", class_="date") else "N/A"
# Add to data list
reviews_data.append({
"Title": title,
"Rating": rating,
"Review Text": review_text,
"Author Details": author_details,
"Date": date
})
except Exception as e:
print(f"Error extracting review: {str(e)}")
continue
print(f"Scraped {len(review_containers)} reviews from page {page}")
return reviews_data
第3步:運行刮板並保存數據
if __name__ == "__main__":
# Initialize driver
driver = init_driver()
# Example: Glassdoor company reviews URL (replace with your target)
target_company_url = "https://www.glassdoor.com/Reviews/Google-Reviews-E9079"
# Scrape 3 pages of reviews
scraped_reviews = scrape_glassdoor_reviews(driver, target_company_url, num_pages=3)
# Save data to Excel
if scraped_reviews:
df = pd.DataFrame(scraped_reviews)
df.to_excel("glassdoor_google_reviews.xlsx", index=False)
print(f"Successfully saved {len(scraped_reviews)} reviews to glassdoor_google_reviews.xlsx")
else:
print("No reviews scraped.")
# Close the driver
driver.quit()
大問題:Glassdoor IP禁令以及如何修復它們
如果你運行上面的基本抓取器超過5-10頁,你可能會得到一個知識產權禁令。Glassdoor檢測到來自單個IP的頻繁請求並阻止它——你會看到“403禁止”錯誤或被重定向到驗證碼頁面。這是大規模抓取的攪局器。
唯一可靠的解決方法是使用代理服務輪換IP地址。代理通過不同的IP路由您的請求,使請求看起來像是來自多個用戶(而不是單個機器人)。但並非所有代理都適用於Glassdoor抓取——以下是要避免的:
免費代理:緩慢、不穩定,並且通常已經被Glassdoor阻止。它們會導致您的刮刀失敗或更快地被禁止。
基於客戶端的VPN:需要安裝軟件,很難與Selenium/Python抓取器集成。他們還使用靜態IP(不旋轉)並破壞自動化。
低質量的付費代理:高停機時間、低速度和共享IP(被其他抓取器過度使用)。它們會導致不一致的結果和頻繁的禁令。
對於Glassdoor評論抓取器,您需要一個無客戶端的、高可用性的代理服務,它支持IP輪換並與Python/Selenium無縫集成。
將IPFLY代理集成到您的Glassdoor評論刮板中
IPFLY是專爲網頁抓取而設計的無客戶端代理服務。憑藉99.99%的正常運行時間、100多個全球節點以及與Selenium/Python的簡單集成,IPFLY可讓您輕鬆輪換IP-避免Glassdoor的IP禁令。最重要的是:無需安裝軟件-只需在刮刀中添加幾行代碼。
玻璃門刮擦的主要IPFLY優勢
100%無客戶端集成:直接使用Selenium的代理設置-無需安裝額外的軟件。非常適合在本地機器或雲服務器(無頭環境)上運行的Python抓取器。
99.99%正常運行時間: IPFLY的全球節點針對網絡抓取進行了優化,確保沒有斷開連接或停機時間——這對於長時間運行的抓取器至關重要(例如,抓取100多頁評論)。
IP旋轉:隨着每個請求或頁面加載旋轉IP以模仿真實的用戶行爲。Glassdoor不會將您的刮刀檢測爲機器人。
快速速度:低延遲(平均50-150毫秒)確保您的刮刀快速運行-無需等待緩慢的代理。
全球覆蓋:通過選擇目標國家的IPFLY節點訪問Glassdoor區域(例如,Glassdoor US、Glassdoor UK)-非常適合抓取特定區域的評論。
分步:將IPFLY添加到您的Python Scraper
更新init_driver()函數以包含IPFLY的代理設置。
def init_driver_with_ipfly():
# IPFLY Proxy Configuration (replace with your details from IPFLY dashboard)
IPFLY_USER = "your_ipfly_username"
IPFLY_PASS = "your_ipfly_password"
IPFLY_IP = "198.51.100.50"
IPFLY_PORT = "8080"
# Configure Chrome options with IPFLY proxy
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)
# Add IPFLY proxy to Chrome options
proxy = f"{IPFLY_IP}:{IPFLY_PORT}"
chrome_options.add_argument(f'--proxy-server=http://{proxy}')
# Initialize Chrome driver
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=chrome_options
)
# Handle proxy authentication (if required)
driver.get(f"http://{IPFLY_USER}:{IPFLY_PASS}@{IPFLY_IP}:{IPFLY_PORT}")
time.sleep(2)
driver.implicitly_wait(10)
return driver
使用IPFLY更新了刮板
if __name__ == "__main__":
# Initialize driver with IPFLY proxy (replace init_driver() with this)
driver = init_driver_with_ipfly()
# Target company URL (replace with your own)
target_company_url = "https://www.glassdoor.com/Reviews/Google-Reviews-E9079"
# Scrape 10 pages of reviews (safe with IPFLY proxy)
scraped_reviews = scrape_glassdoor_reviews(driver, target_company_url, num_pages=10)
# Save to Excel
if scraped_reviews:
df = pd.DataFrame(scraped_reviews)
df.to_excel("glassdoor_google_reviews_ipfly.xlsx", index=False)
print(f"Successfully saved {len(scraped_reviews)} reviews (IPFLY proxy used)")
else:
print("No reviews scraped.")
driver.quit()
IPFLY與其他Glassdoor抓取代理:數據驅動的比較
我們使用Glassdoor評論刮擦器針對常見代理類型測試了IPFLY,測量刮擦器的關鍵指標:成功率、禁令前刮擦的頁面和速度。以下是結果(刮擦50頁評論):
| 代理類型 | 禁令前被刮除的頁面 | 成功率(已提取評論) | 每頁平均時間 | 硒整合容易 | 適合玻璃門刮擦 |
|---|---|---|---|---|---|
| IPFLY(無客戶端付費代理) | 50+(無禁令) | 99% | 3.2 | 簡單(10行配置) | ★★★★★ (最佳選擇) |
| 免費公共代理 | 3–5 | 45% | 12.5 | 簡單但不可靠 | ★☆☆☆☆ (避免) |
| 基於客戶端的VPN | 10–15 | 90% | 5.8 | 差(無硒整合) | ★★☆☆☆ (打破自動化) |
| 共享付費代理 | 20–25 | 85% | 6.1 | 簡單 | ★★★☆☆ (禁止/過度使用IP的風險) |
在海外上傳產品視頻或廣告素材總是滯後甚至失敗?大文件傳輸需要專用代理!立即訪問IPFLY.net獲取高速傳輸代理(無限帶寬),然後加入IPFLY Telegram社區-獲取“跨境大文件傳輸優化技巧”和“海外視頻同步代理設置”。加快文件傳輸,保持業務正常!

Glassdoor評論刮板的高級優化
使用以下高級技巧將您的刮刀提升到一個新的水平:
1. 自動處理分頁
不要指定固定數量的頁面,而是修改刮刀以繼續刮擦,直到沒有更多的評論:
def scrape_all_reviews(driver, company_url):
reviews_data = []
page = 1
while True:
page_url = f"{company_url}?page={page}"
driver.get(page_url)
time.sleep(2)
soup = BeautifulSoup(driver.page_source, "html.parser")
review_containers = soup.find_all("div", class_="gdReview")
if not review_containers:
print("No more reviews found. Exiting...")
break
# Extract reviews (same as before)
for review in review_containers:
# ... (extraction code)
pass
print(f"Scraped {len(review_containers)} reviews from page {page}")
page += 1
return reviews_data
2.刪除額外數據(工資、面試)
通過更新提取邏輯修改刮刀以提取更多數據(例如,工資範圍、面試問題)。例如,要刮工資:
# Add this to the review extraction loop (if available)
salary = review.find("span", class_="salaryAmount").text.strip() if review.find("span", class_="salaryAmount") else "N/A"
3.運行Scraper Headless(無瀏覽器窗口)
對於雲/服務器環境,以無頭模式運行Selenium(沒有可見的瀏覽器窗口):
chrome_options.add_argument("--headless=new") # Add this to Chrome options
4.添加請求延遲和重試
通過在請求之間添加隨機延遲來避免壓倒Glassdoor的服務器。使用隨機庫:
import random
# Replace time.sleep(2) with:
time.sleep(random.uniform(1.5, 3.5)) # Random delay between 1.5–3.5 seconds
常見玻璃門刮板問題和修復(專注於IPFLY)
即使使用IPFLY,您也可能會遇到問題。以下是最常見的問題及其解決方案:
問題1:即使使用IPFLY,刮板也會被阻止
修復:1)增加請求延遲(使用隨機。統一(3,5))。2)更頻繁地旋轉IP(爲每個頁面獲取新的IPFLY節點)。3)更新您的用戶代理(使用真實用戶代理列表並隨機化它們)。
問題2:代理身份驗證失敗
修復:1)驗證您的IPFLY用戶名/密碼/IP/端口是否正確(檢查您的IPFLY儀表板)。2)URL編碼密碼中的特殊字符(例如,@→%40)。
問題3:刮擦速度慢
修復:1)使用靠近Glassdoor服務器的IPFLY節點(例如,Glassdoor US的US節點)。2)減少請求延遲(但不要低於1.5秒)。3)禁用不必要的Chrome選項(例如,圖像加載):
chrome_options.add_argument("--blink-settings=imagesEnabled=false") # Disable images
問題4:未加載動態內容
修復:1)增加Selenium的隱式等待時間(例如,驅動程序。implicitly_wait(15))。2)對特定元素使用顯式等待:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Wait for reviews to load
WebDriverWait(driver, 15).until(
EC.presence_of_element_located((By.CLASS_NAME, "gdReview"))
)
關於Glassdoor Review Scraper Python的常見問題
Q1:我可以在沒有硒的情況下刮玻璃門嗎?
這很困難。Glassdoor使用JavaScript動態加載評論,請求/美麗湯無法解析(它們只能獲取靜態超文本標記語言)。Selenium或Playwright需要渲染動態內容。
Q2:刮玻璃門時如何避免驗證碼?
使用IPFLY輪換IP、添加隨機請求延遲和模仿真實用戶行爲(例如,隨機用戶代理、滾動)。對於頻繁的驗證碼,請使用驗證碼解決服務(例如2Captcha)或降低請求率。
Q3:爲什麼IPFLY比免費代理更好?
免費代理速度慢、不可靠,並且經常被Glassdoor阻止。IPFLY 99.99%的正常運行時間、IP輪換和快速速度確保您的刮刀在沒有禁令的情況下平穩運行。它還與Selenium無縫集成-無需額外設置。
Quar:我可以批量抓取Glassdoor評論(1000+評論)嗎?
是的-使用IPFLY。使用IP輪換、請求延遲和無頭模式批量抓取。對於非常大的數據集,請考慮使用IPFLY的企業計劃(無限IP)並將抓取器分佈在多個線程上(使用併發.期貨)。
Q5:抓取Glassdoor評論合法嗎?
Glassdoor的用戶使用條款禁止未經授權的抓取。始終抓取公共數據,限制您的請求率,並將數據用於非商業目的。如果您不確定,請諮詢法律專業人士。
使用Python和IPFLY構建可靠的Glassdoor評論刮板
Glassdoor評論刮擦器Python是提取有價值的僱主數據的強大工具——但Glassdoor的反刮擦措施使其具有挑戰性。成功的關鍵是使用像IPFLY這樣可靠的代理服務來避免知識產權禁令。
在本指南中,我們涵蓋了構建工作刮刀所需的一切:環境設置、核心代碼、動態內容處理和IPFLY代理集成。通過提供的代碼和提示,您可以自定義刮刀以安全高效地提取任何公司的評論、工資或面試數據。
準備好開始抓取了嗎?註冊IPFLY的免費試用,複製本指南中的代碼,並將目標公司的URL替換爲您自己的URL。您將立即提取Glassdoor評論-無需擔心IP禁令。