2017-06-02 27 views
0

我正在收集website的鏈接。我遍歷它有頁面,每個頁面上的我檢索與該鏈接:Selenium - Python設置查找元素的超時時間

links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a') 

現在......有時網站失敗,並不表明它應該的鏈接。例如,它通常說:

鏈接1

鏈接2

...

鏈接ň

頁M

突然有一個頁面,假設M + 1根本不顯示任何鏈接。然後代碼卡在上面的行(links = ...)「尋找」的鏈接。我數以看到每個網頁的鏈接數量我有一個計數器鏈接:

if numlinks_inrun == 0: 
    print('nolinks') 

現在,我從來沒有得到消息「nolinks」打印。當我按下CTRL + C在終端中止程序,我在終端得到回溯:

links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a') 
    File "/home/vladimir/anaconda3/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 305, in find_elements_by_xpath 
    return self.find_elements(by=By.XPATH, value=xpath) 

這就是爲什麼我知道程序卡住在這一點上。有誰知道如何設置超時時間,以便硒不會永久搜索那些未知的鏈接?

+2

https://selenium-python.readthedocs.io/waits.html#explicit-waits – Amit

+0

@VladimirVargas我得到一個消息'這個請求被阻安全rules'時我嘗試訪問[網站](http://www.metrocuadrado.com/venta/)。我們有其他選擇嗎?謝謝 – DebanjanB

+0

它看起來像一個特定的頁面或一些頁面需要很長時間來加載它。您可以設置頁面加載超時。我不認爲這是因爲find元素默認等待,如果它沒有找到任何元素,它不會等到你設置隱式超時。 – Murthi

回答

1

這似乎是一個問題,實際上沒有加載硒元素來定位它的元素。您可能需要考慮添加一個明確的等待,您可以使用該等待來設置selenium查找指定頁面元素之前的秒數。這就是爲什麼你沒有看到「nolinks」輸出,因爲它出錯了。

語境: https://selenium-python.readthedocs.io/waits.html#explicit-waits

相關問題