NoSuchElementException (SyntaxError: too many statically nested blocks)
NoSuchElementException (SyntaxError: too many statically nested blocks)
我是新手,正在尝试找出是否有更好的方法。
从类似的页面中抓取一些数据,但元素在变化,我的解决方案是:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 10:00')]").text
except NoSuchElementException:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'3 - 00:00')]").text
except NoSuchElementException:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:59')]").text
except NoSuchElementException:
try:
...
p3 = 0
等等,但经过一些重复:
SyntaxError: too many statically nested blocks
我找到了处理这个问题的方法:
if p3 == 0:
try:
p3_2 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:45')]").text
except NoSuchElementException:
...
通过这种方式,我设法完成了工作,但我想知道是否有更好的方法?
将所有 xpath-strings 保存在一个列表中,循环遍历此列表,直到找到匹配项。在 except 中,您可以直接传递以尝试下一个值。
for xpath in xpaths:
try:
p = driver.find_element_by_xpath(xpath).text
except NoSuchElementException:
pass
我是新手,正在尝试找出是否有更好的方法。 从类似的页面中抓取一些数据,但元素在变化,我的解决方案是:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 10:00')]").text
except NoSuchElementException:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'3 - 00:00')]").text
except NoSuchElementException:
try:
p3 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:59')]").text
except NoSuchElementException:
try:
...
p3 = 0
等等,但经过一些重复:
SyntaxError: too many statically nested blocks
我找到了处理这个问题的方法:
if p3 == 0:
try:
p3_2 = driver.find_element_by_xpath("(//div/table)[2]/tbody/tr[contains(.,'4 - 09:45')]").text
except NoSuchElementException:
...
通过这种方式,我设法完成了工作,但我想知道是否有更好的方法?
将所有 xpath-strings 保存在一个列表中,循环遍历此列表,直到找到匹配项。在 except 中,您可以直接传递以尝试下一个值。
for xpath in xpaths:
try:
p = driver.find_element_by_xpath(xpath).text
except NoSuchElementException:
pass