在缓存中找不到元素 - Selenium(Python)

时间:2016-01-13 13:25:34

标签: python-2.7 selenium web-scraping

我刚刚写了一个简单的网页编写脚本,为我提供了特定网站页面上的所有剧集链接。脚本工作正常,但现在它已经坏了。我没有做任何改变。

尝试此网址(用于报废): - http://www.crunchyroll.com/tabi-machi-late-show

现在,脚本在中途工作,并给出了一个错误说明,' 在缓存中找不到元素 - 自查询以来页面可能已更改'

我在互联网上查了一下,人们说使用了“隐含的等待”。在某些地方指挥。我做到了,仍然没有运气。

更新:我在降级桌面上尝试了这个脚本,它在那里工作没有任何问题。

这是我的剧本: -

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time
from subprocess import Popen

#------------------------------------------------

try:
    Link = raw_input("Please enter your Link : ")
    if not Link:
        raise ValueError('Please Enter A Link To The Anime Page. This Application Will now Exit in 5 Seconds.')
except ValueError as e:
    print(e)
    time.sleep(5)
    exit()

print 'Analyzing the Page. Hold on a minute.'
driver = webdriver.Firefox()
driver.get(Link)

assert "Crunchyroll" in driver.title
driver.implicitly_wait(5) # <-- I tried removing this lines as well. No luck.
elem = driver.find_elements_by_xpath("//*[@href]")
driver.implicitly_wait(10) # <-- I tried removing this lines as well. No luck.
text_file = open("BatchLink.txt", "w")
print 'Fetching The Links, please wait.'
for elem in elem:
    x = elem.get_attribute("href")
    #print x
    text_file.write(x+'\n')         


print 'Links have been fetched. Just doing the final cleaning now.'
text_file.close()

CleanFile = open("queue.txt", "w")
with open('BatchLink.txt') as f:
    mylist = f.read().splitlines()
    #print mylist
    with open('BatchLink.txt', 'r') as inF:
     for line in inF:
        if 'episode' in line:
            CleanFile.write(line)

print 'Please Check the file named queue.txt'
CleanFile.close()
os.remove('BatchLink.txt')
driver.close()

这是错误的屏幕截图(可能有些帮助): http://i.imgur.com/SaANlsg.png

1 个答案:

答案 0 :(得分:1)

好的,我没有使用python但知道问题

你有init的变量 - &gt; elem = driver.find_elements_by_xpath("//*[@href]")

之后你在循环中用它做一些事情 在完成循环之前,尝试再次初始化此变量

elem = driver.find_elements_by_xpath("//*[@href]")

问题是DOM正在发生变化而你正在失去元素集合。