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

如何抓取XHR自动加载页面?Selenium入门实操指引

使用Selenium抓取滚动加载页面的卡片链接

步骤1:准备环境

首先安装Selenium库,并下载对应浏览器的驱动(以Chrome为例):

pip install selenium

下载与你的Chrome版本匹配的ChromeDriver,将其放置在系统PATH路径下,或者在初始化浏览器时指定驱动路径。

步骤2:初始化浏览器并访问目标页面

启动浏览器,打开目标网站,同时添加基础反检测配置避免被识别为自动化工具:

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
import time

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
# 可选:添加用户代理模拟真实浏览器
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')

driver = webdriver.Chrome(options=options)
driver.get("https://moscow.chatnovosela.ru/novostroyki")

步骤3:模拟滚动加载全部内容

页面会在滚动到底部时触发新卡片加载,循环滚动直到没有新内容出现:

last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # 滚动至当前页面底部
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # 等待新内容加载(可根据页面实际加载速度调整时间,或用显式等待替代固定sleep)
    time.sleep(2)
    # 获取更新后的页面高度
    new_height = driver.execute_script("return document.body.scrollHeight")
    # 若高度不再变化,说明所有内容已加载完成
    if new_height == last_height:
        break
    last_height = new_height

提示:如果页面加载不稳定,可替换固定sleep为显式等待,比如等待新的卡片元素出现,提升脚本效率。

步骤4:提取所有卡片链接

滚动完成后,定位卡片链接元素并提取href属性:

# 等待所有卡片链接加载完成(需根据页面实际HTML结构调整CSS选择器)
wait = WebDriverWait(driver, 10)
card_links = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".post-item a")))

# 提取所有链接
all_card_links = [link.get_attribute("href") for link in card_links]

# 输出或保存结果
for link in all_card_links:
    print(link)

注意:CSS选择器需要根据页面实际结构调整——打开浏览器开发者工具,查看卡片链接的HTML层级,比如若卡片容器class为post-item,内部链接是<a>标签,则用.post-item a作为选择器。

步骤5:清理资源

完成抓取后关闭浏览器,释放资源:

driver.quit()

关键注意事项

  • 选择器适配:务必根据目标页面的真实HTML结构调整元素定位方式(CSS选择器或XPath),否则无法正确提取链接。
  • 反爬应对:若网站检测严格,可尝试添加更多浏览器配置(如禁用图片加载、设置随机等待间隔)降低被拦截概率。
  • 异常处理:建议添加try-except块处理加载超时、元素未找到等异常,提升脚本稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:25:18