Python 如何防止我的脚本在第一次循环后中断?
我用python编写了一个脚本,使用selenium从网页中获取一些特定信息。由于该网页是保密的,我不能透露网站地址。无论如何,我希望我现有的刮板会点击网页20个链接中的每一个链接,到达所需的页面,它会收集信息并返回到前面的页面,重复相同的操作,直到所有的20个链接都用完。然而,刮板点击一个链接,转到所需页面解析信息,但不是返回主页重复操作,而是中断。我的循环过程似乎有问题。下面是我的脚本中的一些行,它们可能会给你一些想法,为我提供一个解决方法Python 如何防止我的脚本在第一次循环后中断?,python,python-3.x,selenium,selenium-webdriver,web-scraping,Python,Python 3.x,Selenium,Selenium Webdriver,Web Scraping,我用python编写了一个脚本,使用selenium从网页中获取一些特定信息。由于该网页是保密的,我不能透露网站地址。无论如何,我希望我现有的刮板会点击网页20个链接中的每一个链接,到达所需的页面,它会收集信息并返回到前面的页面,重复相同的操作,直到所有的20个链接都用完。然而,刮板点击一个链接,转到所需页面解析信息,但不是返回主页重复操作,而是中断。我的循环过程似乎有问题。下面是我的脚本中的一些行,它们可能会给你一些想法,为我提供一个解决方法 for link in wait.until(EC
for link in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".section-result"))): ##Supposed to loop through all the links
link.click() ##clicking each link
name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".section-info-text")))[2] ##this is where the document i want to parse from. The browser gets here when a click is executed
print(name.text) #after parsing the docs the code breaks instead of getting back to main page
请注意向右滚动,以查看附在每行上的最低说明。谢谢
这就是我的错误:
line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
如果代码没有返回到主页面,您可能需要执行一个返回到上一个(主页面)页面的命令,例如某种类型的后退按钮。我不是硒专家,但我使用过量角器(selenium的javascript包装器),也遇到过类似的问题。问题本质上是这样的:
linkCount = getCountOfLinks();
for x in range(0, linkCount-1):
#Get all the links again fresh, and pick the next one each iteration
link = getAllTheLinks[x];
link.click();
#the rest of your stuff
name = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".section-info-text")))[2]
print(name.text)
谢谢你的回答。在发布我的问题之前,我尝试在适当的位置使用
driver.back()
这个命令,但没有成功。还是一样。@Topto:在执行driver.back()
之后,当您返回页面时,需要再次查找元素。你可以看看我最后的答案,以供参考。我想这条线索可能有用。我会让你知道的。