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

如何从Booking.com页面直接提取成人客人数(无需正则)

提取Booking.com页面成人客人数的非正则方法

方法一:文本分割过滤

当前获取到的客人文本包含换行和分隔符,可通过清理文本后拆分筛选,直接提取成人信息:

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.maximize_window()
test_url = 'https://www.booking.com/hotel/gr/diamandi-20.en-gb.html?label=gen173nr-1DCAEoggI46AdIM1gEaFyIAQGYAQm4ARjIAQzYAQPoAQGIAgGoAgS4ApGp7ZgGwAIB0gIkZTBjOTA2MTQtYTc0MC00YWUwLTk5ZWEtMWNiYzg3NThiNGQ12AIE4AIB&sid=47583bd8c0122ee70cdd7bb0b06b0944&aid=304142&ucfs=1&arphpl=1&checkin=2022-10-24&checkout=2022-10-30&dest_id=-829252&dest_type=city&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=2&hapos=2&sr_order=popularity&srpvid=f0f16af3449102aa&srepoch=1662736362&all_sr_blocks=852390201_352617405_2_0_0&highlighted_blocks=852390201_352617405_2_0_0&matching_block_id=852390201_352617405_2_0_0&sr_pri_blocks=852390201_352617405_2_0_0__30000&from=searchresults#hotelTmpl'
driver.get(test_url)
time.sleep(3)
soup2 = BeautifulSoup(driver.page_source, 'lxml')
guests = soup2.select_one('span.xp__guests__count')

# 提取成人信息的核心代码
if guests:
    # 清理多余换行和空格
    clean_text = guests.text.strip()
    # 按分隔符·拆分各部分并清理
    guest_parts = [part.strip() for part in clean_text.split('·')]
    # 筛选包含adults的条目
    adults_info = next(part for part in guest_parts if 'adults' in part)
    print(adults_info)  # 输出:2 adults

方法二:精准定位DOM元素

如果页面DOM结构中成人信息是独立的子元素,可直接通过筛选文本内容的方式定位元素,避免处理整段文本:

# 替换原代码中提取guests的部分
adults_element = soup2.select_one('span.xp__guests__count *', text=lambda t: t and 'adults' in t.strip())
if adults_element:
    adults_info = adults_element.text.strip()
    print(adults_info)  # 输出:2 adults

这种方式依赖页面DOM结构的稳定性,若后续页面布局不变,会比文本分割更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:55:24