我试图读取所有名为shadow class non mb-3的元素,并多次迭代以提取readHeading和readCollapse。但是第一个代码返回零,因此循环不运行。它也找不到readHeading和readCollapse。我尝试了xpath和按名称搜索
麦可德
values="/0"
ga=pandas.read_csv("contracts/adresses.csv")
for i in range (ga.size-1):
fj=ga.iloc[i][0]
# driver.get("https://etherscan.io/address/"+str(fj))
break
time.sleep(5)
driver.get("https://etherscan.io/address/"+str(fj)+"#readContract")
wait = WebDriverWait(driver,30)
frame = wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID,"readcontractiframe")))
expandall = wait.until(EC.element_to_be_clickable((By.XPATH,"//a[@onclick='expandCollapseAll()']")))
expandall.click()
time.sleep(10)
a=[]
va=[]
sik = driver.find_element((By.XPATH,"//*[@id='readContractAccordion']"))
print(sik)
for i in sik:
try:
print(driver.find_element((By.CLASS_NAME, "readHeading"+str(i))))
print(driver.find_element(By.CLASS_NAME, "readCollapse" +str(i)))
print(i)
except:
print("Elements finished")
break
The link
HTML
<div class="card shadow-none mb-3">
<div class="card-header bg-light card-collapse p-0" id="readHeading1">
<a class="btn btn-link btn-block text-dark d-flex justify-content-between align-items-center py-2" data-toggle="collapse" href="#readCollapse1" aria-expanded="true" aria-controls="readCollapse1">
1. name
<span class="accordion-arrow">
<i class="fas fa-arrow-down small"></i>
</span>
</a>
</div><div id="readCollapse1" class="readContractFunction collapse show" aria-labelledby="readHeading1" style="">
<div class="card-body p-3"><form>
<div class="form-group">BNB <i>
<span class="text-monospace text-secondary">string</span></i></div></form></div></div></div>
更新: Error furas
页码:https://etherscan.io/token/0xB8c77482e45F1F44dE1745F52C74426C631bDD52#readContract
我发现了一些错误和问题:
值位于
<iframe>
中,Selenium
将其视为单独的页面,需要driver.switch_to.frame(...)
才能访问值使用
By.CLASS_NAME
获取readHeading
和readHeading
,但必须使用By.ID
我不明白你试图用
sik
做什么,因为你用find_element
(末尾没有s
)来得到sik
,所以它只给出一个元素,但后来你试着用for
循环,你希望得到readHeading
和readHeading
的数字。我假设所有标记在页面上都有9个元素,我使用了for i in range(1, 9):
最小工作代码
它可能需要一些更改-例如,它可以使用
WebDriverWait
而不是sleep
-但是现在它可以工作了结果:
相关问题 更多 >
编程相关推荐