如何用Selenium获取网页完整文本?求解决方案(附代码及页面链接)
解决方案:获取网页完整文本问题
问题分析
你当前的代码直接定位Virtual Games后的<p>元素,但页面中该段落大概率是折叠状态(从截图推测,长文本默认只显示部分,需点击展开按钮才能展示全部内容),导致text方法只能拿到截断后的内容。
可行解决步骤
- 先定位并点击对应展开按钮,确保文本完全展示
- 用显式等待确保元素加载完成,避免异步加载导致的定位失败
- 滚动到目标元素区域,确保元素处于视口内,提升交互成功率
修改后的代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.action_chains import ActionChains options = webdriver.ChromeOptions() options.add_argument("--no-sandbox") options.add_argument("--disable-gpu") options.add_argument("--window-size=1920x1080") options.add_argument("--disable-extensions") driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) wait = WebDriverWait(driver, 15) url = "https://www.askgamblers.com/online-casinos/reviews/casino-friday" driver.get(url) # 1. 滚动到Virtual Games区域,确保元素可见 virtual_games_section = wait.until(EC.presence_of_element_located((By.XPATH, "//h2[text()[contains(.,'Virtual Games')]]"))) ActionChains(driver).scroll_to_element(virtual_games_section).perform() # 2. 查找并点击展开按钮(根据实际页面调整选择器,示例为常见的Read More按钮) try: read_more_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//h2[text()[contains(.,'Virtual Games')]]/following-sibling::p/following-sibling::button[contains(text(),'Read More')]"))) read_more_btn.click() # 等待文本展开,用长度阈值判断是否加载完成 wait.until(lambda d: len(d.find_element(By.XPATH, "//h2[text()[contains(.,'Virtual Games')]]/following-sibling::p").text) > 100) except: # 无展开按钮则跳过 pass # 3. 获取完整文本 full_text = wait.until(EC.presence_of_element_located((By.XPATH, "//h2[text()[contains(.,'Virtual Games')]]/following-sibling::p"))).text print(full_text) driver.quit()
额外说明
- 若页面展开按钮的选择器和示例不符,需用浏览器开发者工具查看元素实际属性,调整XPATH
- 如果文本是动态加载而非折叠,可延长等待时间,或检查是否有未完成的AJAX请求
- 原代码存在重复导入模块的情况,建议清理冗余导入
内容的提问来源于stack exchange,提问作者Amen Aziz
相关产品推荐
相关产品推荐

