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

如何修正Playwright爬虫:点击赛马链接并抓取详情页表格

问题修正方案

问题根源

点击马名链接后你立即获取页面内容,但Playwright跳转新页面需要时间加载,此时抓取的仍是原赛事卡页面的HTML,自然输出原表格。

修正后的代码

import pandas as pd
from playwright.sync_api import sync_playwright


def scrape_ranking(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(url)
        
        # 监听新弹窗并点击马名链接
        with page.expect_popup() as popup_context:
            page.click('text="AI ONE"')
        # 获取详情页对象
        detail_page = popup_context.value
        # 等待详情页表格加载完成,确保内容完整
        detail_page.wait_for_selector('table')
        
        # 抓取详情页HTML
        html = detail_page.content()
        browser.close()

    # 解析详情页表格,若目标表格不是第一个可调整索引
    tables = pd.read_html(html)
    df = tables[0]
    df.to_excel("hkjc_detail.xlsx", index=False)

url_1 = 'https://racing.hkjc.com/racing/information/English/racing/RaceCard.aspx?RaceDate=2023/04/06&Racecourse=HV&RaceNo=1'
scrape_ranking(url_1)

关键调整说明

  • 用page.expect_popup()捕获马名链接打开的新窗口,确保定位到详情页而非原页面;
  • 新增wait_for_selector('table')等待详情页核心元素加载,避免获取未渲染完成的HTML;
  • 删除了原代码中未实际使用的xlsxwriter、BeautifulSoup、xlwings库导入,可按需恢复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:05:01