Python网页爬取:如何获取特定class元素后的段落内容
解决方案
你之前的代码存在两个核心问题:
By.CLASS_NAME不支持传入空格分隔的多个类名,Selenium会把整个字符串当作单个类名匹配,导致根本找不到分隔符元素。- 仅等待分隔符加载完成,没有定位它之后的首个段落元素。
修正后的实现步骤:
- 用XPath或CSS选择器正确匹配多类名的分隔符元素。
- 通过XPath的
following-sibling轴定位分隔符后的第一个段落元素。 - 提取目标段落的文本内容。
完整代码示例:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待多类名的分隔符元素加载(用XPath匹配更灵活) WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[contains(@class, 'wp-block-separator') and contains(@class, 'is-style-dots')]")) ) # 定位分隔符后的首个段落(假设段落是<p>标签,根据实际HTML调整标签名) target_paragraph = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.XPATH, "//*[contains(@class, 'wp-block-separator') and contains(@class, 'is-style-dots')]/following-sibling::p[1]")) ) # 输出目标文本 print(target_paragraph.text)
- 注意事项:
- 如果目标段落不是
<p>标签,把XPath里的p替换成实际的标签名(比如div、article等)。 - 若页面加载存在延迟,可适当延长等待时间,或改用
EC.visibility_of_element_located确保元素可见后再操作。
- 如果目标段落不是
内容的提问来源于stack exchange,提问作者econbuffin2019
相关产品推荐
相关产品推荐

