Glassdoor Review Scraper Python:在30分鐘內構建一個工作工具

19次閱讀

Glassdoor是一座寶貴數據的金礦——員工評論、公司評級、工資範圍和麪試見解。對求職者來說,它是研究潛在僱主的工具;對企業來說,它是分析競爭對手或監控自己聲譽的一種方式;對數據分析師來說,它是趨勢分析的豐富數據集。但問題是:手動收集這些數據既乏味又耗時,而且容易出錯。

這就是Glassdoor評論刮刀Python的用武之地。Python是網絡抓取的完美語言——這要歸功於它的輕量級庫(請求、美麗湯、硒)和易於閱讀的語法。自定義Python刮刀可讓您自動化大規模提取Glassdoor評論的過程,節省您數小時的手動工作。

Glassdoor Review Scraper Python:在30分鐘內構建一個工作工具

但是有一個問題: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 Review Scraper Python:在30分鐘內構建一個工作工具

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禁令。

正文完
 0
IPFLY
IPFLY
高質量代理的領先提供商
用户数
2
文章数
2344
评论数
0
阅读量
1213985