我是一个处理 python 和 selenium 的新手,一周前才开始,所以请原谅我乱七八糟的代码。我试图从该网站中带有标签名称的元素中提取所有“structure_id”和“d”信息,并将它们存储在单独的 svg 文件中。这是我遇到问题的代码片段:
for number in range(1,106):
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.ID, 'master_group'))
)
selected = driver.find_element_by_class_name('simstripImgSel')
driver.get(driver.current_url)
paths = driver.find_elements_by_tag_name('path')
for path in paths:
while True:
try:
structure = path.get_attribute('structure_id')
d = path.get_attribute('d')
break
except Exception as e:
print(e)
paths = driver.find_elements_by_tag_name('path')
continue
if structure != None:
print('Attributes copied.')
for word, initial in data.items():
structure = structure.replace(word,initial)
filepath = Path('C:\\Users\\justs\\Downloads\\Ordered_svgs\\slice'+str(number)+'\\'+str(structure)+'.svg')
if filepath.is_file():
text = open('C:\\Users\\justs\\Downloads\\Ordered_svgs\\slice'+str(number)+'\\'+str(structure)+'.svg','r+')
rep = text.read()
rep = rep.replace('</svg>','<path id="')
text.close()
这对于第一页效果很好,但我需要提取所有 106 页的路径,并且在按一次“F”后(移动到下一页),我在 行 处获得了陈旧的元素引用structure = path.get_attribute('structure_id')。最初,我认为路径需要一些时间来加载,因此需要 while 循环,但到了第二页,它就陷入了永无休止的陈旧元素引用。
显式等待或刷新页面也不起作用,我怀疑 WebElementdriver.find_element_by_class_name根本没有更新(当我进入下一页后刷新页面时,我提取的文件最终与第一页相同,无论如何,我在第 5 页得到了陈旧的元素引用)。我该如何解决这个问题?任何帮助表示赞赏!
莫回无
相关分类