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

Python请求Zillow分页失效:指定页码仍返回首页数据

问题

我尝试通过分页请求Zillow网站上托伦斯市的多页租房列表,否则只能获取第一页数据。但即便手动指定具体页码,代码仍仅加载第一页内容。

# Rent
import requests
from bs4 import BeautifulSoup as soup
import json

url = 'https://www.zillow.com/torrance-ca/rentals'

params = {
  'q': {"pagination":{"currentPage": 1},"isMapVisible":False,"filterState":{"fore":{"value":False},"mf":{"value":False},"ah":{"value":True},"auc":{"value":False},"nc":{"value":False},"fr":{"value":True},"land":{"value":False},"manu":{"value":False},"fsbo":{"value":False},"cmsn":{"value":False},"fsba":{"value":False}}},"isListVisible":True
}

headers = {
  # headers were copied from network tab on developer tools in chrome
}


html = requests.get(url=url,headers=headers, params=params)
html.status_code

bsobj = soup(html.content, 'lxml')

for script in bsobj.find_all('script'):

  inner_text_with_string = str(script.string)
  if inner_text_with_string[:18] == '<!--{"queryState":':
    my_query = inner_text_with_string

my_query = my_query.strip('><!-')

data = json.loads(my_query)
data = data['cat1']['searchResults']['listResults']

print(data)

这段代码返回约40条房源信息,但将"pagination":{"currentPage": 1}改为"pagination":{"currentPage": 2}后,仍返回相同的房源列表,仿佛pagination参数未被识别。

我认为这些参数是正确的,因为它们直接从URL查询字符串中提取,并使用格式化工具处理过。请问我哪里操作出错了?


解决方法
  • 参数格式错误:你直接把Python字典作为q参数的值传入requests.get,但Zillow要求q参数是JSON字符串格式,不是原始字典。当你传入字典时,requests会自动把它编码成URL查询参数的键值对,而不是正确的JSON字符串,导致Zillow无法解析分页参数。
  • 修正步骤:
    1. 将params里的q值转换为JSON字符串,使用json.dumps()处理:
      params = {
        'q': json.dumps({
          "pagination":{"currentPage": 2},
          "isMapVisible":False,
          "filterState":{
            "fore":{"value":False},
            "mf":{"value":False},
            "ah":{"value":True},
            "auc":{"value":False},
            "nc":{"value":False},
            "fr":{"value":True},
            "land":{"value":False},
            "manu":{"value":False},
            "fsbo":{"value":False},
            "cmsn":{"value":False},
            "fsba":{"value":False}
          },
          "isListVisible":True
        })
      }
      
    2. 确保请求头完整,尤其是User-Agent、Cookie和Referer这些字段——Zillow会验证这些信息来识别合法请求,缺失的话可能返回默认第一页数据或者被拦截。
  • 额外提醒:Zillow有反爬机制,频繁请求可能会被封禁IP,建议添加请求间隔时间,避免短时间内发送大量请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:18