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

Playwright Python无法定位select标签并切换分页选项求助

解决Playwright切换每页产品数后获取不到全部链接的问题

问题诊断

  • 选择器错误:页面select的id是prodPerPageSelTop,但代码中多次使用prodperpageselect(大小写错误+拼写偏差),导致无法正确定位元素
  • 等待逻辑混乱:提前执行的等待函数和后续操作不匹配,没有等待产品列表更新完成
  • 链接提取函数bug:get_links中return these_links写在循环内部,只会返回第一个产品链接,而非全部

修复后的代码

页面操作逻辑修正

import time
from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup

def playwright_get_soup(url, wait_after_page_load=None):
    with sync_playwright() as this_playwright:
        browser = this_playwright.chromium.launch()
        page = browser.new_page()
        # 等待网络空闲,确保页面核心资源加载完成
        page.goto(url, wait_until="networkidle")
        
        # 定位正确的下拉选择器并切换到96条产品
        select_selector = "#prodPerPageSelTop"
        page.wait_for_selector(select_selector)
        page.select_option(select_selector, value="96")
        
        # 等待产品列表更新完成,确保至少加载96个产品元素
        page.wait_for_function("document.querySelectorAll('.thumbnail').length >= 96")
        # 额外短等待确保渲染完成(可选,优先依赖wait_for_function)
        time.sleep(2)
        
        soup = BeautifulSoup(page.content(), "html.parser")
        browser.close()
        return soup

链接提取函数修正

def get_links(page_soup):
    these_links = []
    all_product_thumbnails = page_soup.find_all("div", class_="thumbnail")
    for thumbnail in all_product_thumbnails:
        a_tag = thumbnail.find("a")
        if a_tag and "href" in a_tag.attrs:
            link = a_tag["href"]
            these_links.append(link)
    # 将return移至循环外部,确保收集所有链接
    return these_links

# 执行测试
soup = playwright_get_soup("https://www.alphabroder.com/category/t-shirts")
page_links = get_links(soup)
print(f"获取到的链接数量:{len(page_links)}")
assert(len(page_links) == 96)

关键修复点说明

  • 统一使用正确的#prodPerPageSelTop定位下拉框,避免选择器大小写/拼写错误
  • 用page.wait_for_function等待产品元素数量达标,确保页面完全更新后再获取内容
  • 调整链接提取函数的return位置,保证收集全部产品链接
  • 优化页面加载策略,使用networkidle等待网络空闲,避免提前执行操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:26:20