Selenium爬取Audible最后页码异常:元素存在却返回空字符串
解决Selenium爬取Audible最后页码返回空字符串的问题
问题原因及对应解决方案:
- 元素渲染时机偏差:
presence_of_all_elements_located仅保证元素存在于DOM中,但文本内容可能还未完成渲染。改用visibility_of_all_elements_located等待元素可见,确保文本已加载完毕。 - XPATH匹配精度问题:原XPATH中
contains(@class,"pagingElements ")的末尾空格可能导致匹配失效,换成contains(concat(" ", @class, " "), " pagingElements ")的方式,能更严谨匹配目标class,避免空格干扰。 - 文本获取方式不当:
get_attribute('textContent')可能获取到未渲染或隐藏的内容,使用Selenium内置的.text方法更适合提取可见元素的文本。
修正后的代码:
url = 'https://www.audible.com/search' driver = webdriver.Chrome(service=service, options=options) driver.get(url) # 等待分页元素可见,使用更准确的XPATH匹配class all_pages = WebDriverWait(driver, 50).until(EC.visibility_of_all_elements_located( (By.XPATH, '//ul[contains(concat(" ", @class, " "), " pagingElements ")]/li') )) last_page = all_pages[-2] # 使用.text获取可见文本 last_page_num = int(last_page.text)
额外提示:
- 若页面分页组件是动态加载的,可能需要先滚动页面到分页区域,触发元素加载。
- 确认页面是否存在多个分页栏,确保XPATH唯一匹配目标分页组件。
内容的提问来源于stack exchange,提问作者mshahwan
相关产品推荐
相关产品推荐

