使用Selenium拉取数据并导出到Python后如何访问存储的数据
Selenium提取表格数据报错修复方案
你当前的代码存在3个核心问题,按优先级修改即可正常运行:
- 提交表单后未等待页面加载完成、目标表格渲染完成就执行元素查找,会直接触发元素不存在的报错
- 最后一行获取元素文本的属性拼写错误,你写的
.texte here是错误写法,正确属性为.text - 缺少Selenium相关依赖的导入声明
修正后的完整代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class TestPulldata(): def setup_method(self, method): self.driver = webdriver.Firefox() # 全局隐式等待,避免元素未加载就执行操作 self.driver.implicitly_wait(10) self.vars = {} def teardown_method(self, method): self.driver.quit() def test_pulldata(self): self.driver.get("http://ailab-projects1.ist.psu.edu:8080/bcpred/predict.html") self.driver.find_element(By.NAME, "sequence").send_keys("msdngpqsnqrsapritfggptdstdnnqnggrngarpkqrrpqglpnntaswftaltqhgkeelrfprgqgvpintnsgpddqigyyrratrrvrggdgkmkelsprwyfyylgtgpeaslpygANKEGIVWVATEGALntpkdhigtrnpnnnaatvlqlpqgttlpkgfyaegsrggsqassrsssrsrgnsrnstpgssrgnsparmasgggetalalllldrlnqleskvsgkgqqqqgqtvtkksaaeaskkprqkrtatkqynvtqafgrrgpeqtqgnfgdqdlirqgtdykhwpqiaqfapsasaffgmsrigmevtpsgtwltyhgaiklddkdpqfkdnvillnkhidayktfpptepkkdkkkktdeaqplpqrqkkqptvtllpaadmddfsrqlqnsmsgasadstqa") dropdown = self.driver.find_element(By.NAME, "length") dropdown.find_element(By.XPATH, "//option[. = '14']").click() dropdown = self.driver.find_element(By.NAME, "specificity") dropdown.find_element(By.XPATH, "//option[. = '65']").click() self.driver.find_element(By.NAME, "submit").click() # 显式等待目标表格元素渲染完成再取值,最多等待15秒 target_ele = WebDriverWait(self.driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, "tr:nth-child(2) > td:nth-child(3)")) ) self.vars["output"] = target_ele.text # 可以打印验证取值结果 print(self.vars["output"])
额外说明
如果运行时仍有定位失败的问题,可以打开浏览器开发者工具,确认提交后渲染的表格结构和你用的CSS选择器是否匹配,部分网站提交后表格会嵌套在iframe内,如果是这种情况需要先切换到对应iframe再执行元素查找。
内容的提问来源于stack exchange,提问作者ells20
相关产品推荐
相关产品推荐

