You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python高效触发网页多个JavaScript事件?Glassdoor爬取优化

高效获取Glassdoor「Advice to Management」内容的方案

针对你爬取Glassdoor评论时遇到的「Continue Reading」按钮加载问题,以下是几个比原生Selenium更高效的解决方案:

方案一:直接调用Glassdoor的异步接口(最快)

点击「Continue Reading」本质是触发前端调用后端接口获取完整内容,不需要启动浏览器渲染页面,直接抓包模拟请求即可:

  1. 打开浏览器开发者工具(F12),切换到「Network」标签;
  2. 点击页面上的「Continue Reading」按钮,找到新增的XHR请求(通常是POST方法,URL包含类似/reviews/advice或/expandedContent的路径);
  3. 记录请求的URL、请求头(Cookie、User-Agent、Referer等)、请求参数(比如评论ID、公司ID);
  4. 用requests或grequests批量发送请求,获取完整的「Advice to Management」内容。

示例代码:

import requests

headers = {
    'User-Agent': '你的浏览器User-Agent',
    'Cookie': '你的Glassdoor登录Cookie',
    'Referer': 'https://www.glassdoor.com/Reviews/Alteryx-Reviews-E351220.htm'
}

# 假设抓包得到的接口URL和参数
api_url = 'https://www.glassdoor.com/api/reviews/getExpandedAdvice'
params = {
    'reviewId': '71858088',  # 对应评论的ID,可从页面HTML中提取
    'companyId': '351220'
}

response = requests.get(api_url, headers=headers, params=params)
full_advice = response.json().get('adviceContent')

方案二:优化Selenium配置提速

如果必须用浏览器渲染,通过以下配置大幅减少页面加载时间:

  • 启用无头模式,不显示浏览器窗口;
  • 禁用图片、CSS、非必要JS加载;
  • 用显式等待批量处理所有按钮。

示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

# 配置Chrome选项
chrome_options = Options()
chrome_options.add_argument('--headless=new')  # 无头模式
chrome_options.add_argument('--disable-images')  # 禁用图片加载
chrome_options.add_argument('--disable-css')  # 禁用CSS渲染
chrome_options.add_argument('--blink-settings=imagesEnabled=false')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.glassdoor.com/Reviews/Alteryx-Reviews-E351220.htm")

# 等待所有「Continue Reading」按钮加载完成,然后批量点击
wait = WebDriverWait(driver, 10)
buttons = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "v2__EIReviewDetailsV2__continueReading")))

for btn in buttons:
    try:
        driver.execute_script("arguments[0].click();", btn)
    except Exception as e:
        # 跳过不可点击的按钮(比如已经展开的)
        continue

# 此时页面已展开所有内容,提取HTML给BeautifulSoup处理
page_source = driver.page_source
driver.quit()

方案三:用Playwright替代Selenium(更高效的浏览器自动化)

Playwright的无头模式性能优于Selenium,支持自动等待元素,API更简洁,适合批量处理:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://www.glassdoor.com/Reviews/Alteryx-Reviews-E351220.htm")
    
    # 批量点击所有「Continue Reading」按钮
    page.locator(".v2__EIReviewDetailsV2__continueReading").click_all()
    
    # 获取页面源码
    page_source = page.content()
    browser.close()

注意:Glassdoor有反爬机制,不管用哪种方案,都需要合理设置请求间隔、使用代理、保持Cookie有效,避免被封禁。

内容的提问来源于stack exchange,提问作者Dunc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:05:36