Airbnb站点Python爬虫Request Get请求返回结果随机异常求助
问题原因分析
- Airbnb前端页面采用动态类名混淆策略,你代码中使用的
_8s3ctt是平台自动生成的随机类名,会定期更新失效,这是返回结果不稳定的最常见原因 - 你使用的搜索URL中,入住/退房日期是2021年的过期参数,过时的搜索条件本身就会出现随机返回空结果的情况
- 页面内容大部分由JavaScript动态渲染,直接用requests请求静态HTML,部分请求返回的内容未包含完整渲染的房源节点,也会导致解析不到元素
- 反爬策略触发后,平台会返回验证码页面、空白页或者假数据页面,你没有对返回内容做合法性校验,直接解析就会得到0条结果
解决方案
- 先打印requests请求返回的完整HTML内容,校验返回的是不是正常的房源搜索结果页,确认是否触发了反爬验证
- 放弃使用随机混淆类名定位元素,改用更稳定的属性定位,比如Airbnb房源卡片统一带有
data-testid="listing-card的属性,用soup.find_all('div', attrs={'data-testid': 'listing-card'})定位兼容性更强 - 更换URL中的入住、退房参数为近期有效日期,排除无效搜索条件的影响
- 补充完整的请求头,包括浏览器真实的User-Agent、Accept、Accept-Language以及必要的Cookie字段,不要仅携带部分请求头
- 条件允许的情况下优先抓取平台的前端API接口,Airbnb搜索时会返回结构化的JSON格式房源数据,不需要解析HTML,稳定性更高;也可以使用Selenium、Playwright等无头浏览器工具模拟浏览器行为,拿到完整渲染后的页面内容再解析
内容的提问来源于stack exchange,提问作者WJSG
相关产品推荐
相关产品推荐

