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

使用Selenium爬取Audible有声书时的文本提取及分页点击问题

Audible分页爬取问题解决(元素文本为空+无法点击下一页)

一、分页元素文本为空的解决办法

你定位到分页li元素但文本为空,核心原因有两个:

  1. 文本不在li本身,而是在子元素内:Audible的分页数字实际嵌套在<li>下的<a>标签里,直接取li.text自然为空。
  2. 元素未完全加载:页面渲染延迟时,即使元素已被定位,文本还没渲染出来。

对应解决方案:

  • 等待元素加载完成后,获取子元素的文本:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待分页栏加载完成
pagination = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//ul[contains(@class, "pagingElements")]'))
)
pages = pagination.find_elements(By.TAG_NAME, 'li')
# 取倒数第二个li下的a标签文本
last_page = int(pages[-2].find_element(By.TAG_NAME, 'a').text)
  • 如果遇到隐藏元素,可通过get_attribute获取文本内容:
last_page_text = pages[-2].get_attribute('innerText')
last_page = int(last_page_text.strip())

二、无法点击下一页按钮的解决办法

你定位的<span class="nextButton">本身不可点击,Audible的下一页交互实际绑定在其父级<a>标签上,再加上页面加载延迟、元素遮挡等问题,导致点击失败。

对应解决方案:

  1. 修正定位器,定位可点击的a标签:
# 等待下一页按钮可点击
next_page = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//a[contains(@class, "nextButton")]'))
)
next_page.click()
  1. 如果直接点击失败(比如元素被弹窗遮挡),用JS执行点击:
driver.execute_script("arguments[0].click();", next_page)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:35:32