我刚刚写了一个简单的网页编写脚本,为我提供了特定网站页面上的所有剧集链接。脚本工作正常,但现在它已经坏了。我没有做任何改变。
尝试此网址(用于报废): - 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
答案 0 :(得分:1)
好的,我没有使用python但知道问题
你有init的变量 - &gt; elem = driver.find_elements_by_xpath("//*[@href]")
之后你在循环中用它做一些事情 在完成循环之前,尝试再次初始化此变量
elem = driver.find_elements_by_xpath("//*[@href]")
问题是DOM正在发生变化而你正在失去元素集合。