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

Python Selenium如何获取需点击Div才加载的页面所有URL?

解决Zap Imóveis房源URL无需点击即可获取的方案

针对你爬取Zap Imóveis房源URL的问题,不用点击卡片就能拿到地址的方法主要有三个,都是这类动态网站的常规操作:

1. 提取元素的data-*属性

很多网站会把跳转链接藏在元素的自定义数据属性里,你可以右键房源卡片,选「检查」,在Elements面板里查看这个div的所有属性,找类似data-url、data-listing-link或者data-detail-url这类属性(Zap Imóveis大概率用这类命名)。

用Selenium获取的话,代码示例如下:

# 假设房源卡片的CSS选择器是'.listing-card',请根据实际页面调整
cards = driver.find_elements(By.CSS_SELECTOR, '.listing-card')
for card in cards:
    url = card.get_attribute('data-url')  # 替换成你实际找到的属性名
    print(url)

2. 直接抓取房源数据的API接口

这是效率最高的方法,比爬页面渲染后的内容靠谱得多:

  • 打开Chrome「开发者工具」→「Network」面板,刷新目标页面
  • 在筛选框输入listings、properties或search这类关键词,找返回JSON格式的XHR/Fetch请求
  • 点开请求查看Response,里面会包含每个房源的完整URL、价格、面积等所有数据
  • 直接用Python的requests库请求这个API接口,就能批量拿到所有URL,完全不需要Selenium渲染页面

注意:请求API时要带上浏览器的User-Agent、Cookie等请求头,否则可能被网站拦截。

3. 读取页面的全局JS变量

有些网站会把房源数据存在全局JS变量里,比如window.zapSearchResults这类命名:

  • 打开Chrome的Console面板,输入window.后按Tab键自动补全,查找和房源、搜索相关的变量
  • 找到目标变量后,用Selenium执行JS代码提取数据:
# 假设全局变量是window.searchResults.listings,请根据实际情况调整
results = driver.execute_script('return window.searchResults.listings;')
for listing in results:
    print(listing.url)  # 替换成实际的URL字段名

额外提醒

不管用哪种方法,都要控制请求频率,不要短时间内发送大量请求,否则很容易触发Zap Imóveis的验证码机制。如果用API爬取,可以间隔几秒再请求下一页,尽量模拟正常用户的行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:35:32