各位前輩好,我使用find_elements_by_xpath
取得長度35的list,我要將不顯示的部分剃除,目前我的程式如下
from selenium import webdriver
browser = webdriver.Chrome('./chromedriver.exe')
url_random=random.randint(0,url_length-1)
browser.get('https://www.kip.com.tw/modules/news/')
k = browser.find_elements_by_xpath("//a[contains(@href,'https://www')]")
e = len(k)#一共35個
t = 0
for i in range(e):
if not k[i].is_displayed():
del k[i]
t+=1
if len(k) <= (t+1):
break
因為我的邏輯錯誤,在第25次時,出現list index out of range
錯誤
原因我知道是list被del後長度不足。
請問各位前輩,我應該如何改寫,才能將【不顯示的部分剃除】。
新開一個空的 list
把可顯示的元素塞入這個新開的 list 內
d=[]
for i in k:
if i.is_displayed():
d.append(i)
不知這是不是你要的
我看不懂你的目的是什麼
單就程式來看 list index out of range
可以試試看
把
for i in range(e):
if not k[i].is_displayed():
del k[i]
t+=1
if len(k) <= (t+1):
break
改成
for i in range(e,0,-1):
if not k[i].is_displayed():
del k[i]
簡單說
就是「從後面刪除 not is_diplayed 的元素,以避免 out of range 問題」