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

如何无需硬编码Cookie用Python爬取Zoopla房源链接?

解决Zoopla无硬编码Cookie爬取问题

核心思路:模拟真实浏览器行为维持有效会话

Zoopla的反爬机制依赖Cookie验证、JS渲染和会话追踪,直接用requests或硬编码Cookie都难以长期稳定,以下是可行解决方案:

1. 使用Playwright/Puppeteer模拟完整浏览器交互

这类工具会自动处理Cookie生成、JS渲染和会话维持,完全复刻真人浏览流程:

  • 初始化浏览器实例,打开Zoopla搜索页面
  • 等待动态内容加载完成
  • 直接从页面提取房源链接,会话会自动保留有效Cookie
  • 示例代码(Playwright 同步版):
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 调试时可关闭headless模式查看页面加载情况
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    # 访问目标搜索页
    page.goto("https://www.zoopla.co.uk/for-sale/property/oxford-oxfordshire/")
    # 等待房源链接元素加载完成
    page.wait_for_selector("a[data-testid='listing-details-link']")
    # 提取所有房源链接的href属性
    links = page.locator("a[data-testid='listing-details-link']").all_attribute_values("href")
    for link in links:
        print(f"https://www.zoopla.co.uk{link}")
    browser.close()
  • 优势:无需手动管理Cookie,自动应对大多数反爬检测

2. 复用CloudScraper会话维持Cookie

CloudScraper本身可绕过Cloudflare,但默认每次请求新建会话,复用同一个实例就能自动维持Cookie:

import cloudscraper
import time

# 初始化Scraper实例,建立持久会话
scraper = cloudscraper.create_scraper()
# 先访问Zoopla首页,获取初始有效Cookie
scraper.get("https://www.zoopla.co.uk/")
# 添加随机延迟模拟真人操作
time.sleep(3)
# 请求目标搜索页
response = scraper.get("https://www.zoopla.co.uk/for-sale/property/oxford-oxfordshire/")
# 后续请求复用同一个scraper实例,Cookie会自动携带
# 示例:再次请求分页内容
response_page2 = scraper.get("https://www.zoopla.co.uk/for-sale/property/oxford-oxfordshire/?page_size=25&pn=2")
  • 注意:若会话仍频繁失效,可添加随机User-Agent、请求间隔进一步模拟真人行为

3. 手动分析Cookie生成逻辑(适合进阶场景)

若不想依赖浏览器模拟,可通过抓包分析Zoopla的Cookie生成规则:

  • 用浏览器开发者工具抓包首次访问的请求/响应,识别关键Cookie(如__cf_bm、zuid)的生成逻辑
  • 用execjs执行页面中的关键JS代码,生成符合要求的Cookie并注入requests会话
  • 弊端:维护成本高,Zoopla反爬规则更新后需重新分析适配

关键注意事项

  • 避免高频请求:添加2-5秒的随机延迟,限制单日请求量,防止触发IP封禁
  • 使用代理IP:若单IP被限制,切换代理分散请求来源
  • 校验选择器有效性:定期检查页面结构,确保选择器对应最新的房源链接元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:40:44