2015-10-16 74 views
1

我正在使用硒刮一個網頁。我首先找到我想要的鏈接,然後點擊它並下載它(鏈接是pdf)。有時我能夠這樣做,但有時硒會說沒有找到鏈接。我想這是由於頁面加載不正確。我能做些什麼,我是否正確?在python中無法找到使用硒的鏈接?

這是我以前的代碼:

for b in source_code_2.find_all('a', href=True): 
    if b.has_attr("title"): 
     if(b['title']=='Click here to download'): 
      urllib2.urlretrieve(full_url) 

現在我想用硒和元素來做到這一點。我怎樣才能做到這一點?

+0

我會建議使用[隱式等待](https://selenium-python.readthedocs.org/waits.html#implicit-waits)或[顯式等待](https://selenium-python.readthedocs。組織/ waits.html#顯式等待)。顯式等待可以等待一個元素出現,如果沒有,你可以嘗試刷新。 – Maikflow

+0

我已經在使用隱式等待仍然沒有幫助。 – user3668325

回答

0

我認爲你應該使用明確迫不及待地告訴硒等到特定元素正確加載,在Python中,你可以按照以下方式使用明確的等待:

element = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located((By.ID, "yourElement")) 

OR

element = WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.ID, "yourElement")) 
    element.click() 

你只需要在上面的代碼中替換你的元素ID,你可以根據需要將20秒改爲30,40。因此,上面代碼的含義是您的webdriver將等待20秒才能找到該特定元素。

+0

問題是我有我需要搜索的錨標籤的標題...你能告訴我怎麼可以通過使用明確的等待或一些參考鏈接 – user3668325

+0

好,所以你如何找到elememt?通過linktext?或通過標記名? –

+0

請你能通過更新你的問題來分享你的代碼嗎? –