赞
踩
问题描述:
近日在抓取某网站的时候,遇到一个第三方的数据加密,由于破解成本较高,选择使用selenium进行抓取数据。
在写完抓取脚本运行时候,发现脚本总会报错:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[contains(text(), '123565677')]"}
(Session info: chrome=83.0.4103.116)
一开始我以为是因为页面还没有加载出这个节点,所以我就设置了等待,
wait.until(lambda diver: self.driver.find_element_by_xpath("//div[@class='list-item']"))
直到出现这个元素才会继续下面的操作。
继续运行,发现经常会发现超时错误:
wait.until(lambda diver: self.driver.find_element_by_xpath("//div[@class='12312312']"))
File "D:\Python\Python36\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
经过debug调试:
发现脚本中的语句
self.driver.find_element_by_xpath(detail_xpath).click() 会间歇性的失效,导致无法打开详情页,会导致一系列的报错信息出现。
然后我开始尝试是不是xpath出现了问题。
刚开始我点击定位的是div标签,我尝试性的将定位改为span标签,每次点击都能顺利的进入详情。
如果遇到类似问题可以检查一下xpath问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。