我正在收集website的链接。我遍历它拥有的页面,并在每个页面上检索链接:
links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a')
现在......有时网站会失败并且不会显示它应该的链接。例如,通常会说:
LINK1
link2
...
链接N
第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)
这就是为什么我知道程序在此时陷入困境。有谁知道如何设置超时,以便selenium不会永远搜索那些未存在的链接?
答案 0 :(得分:2)
这似乎是一个问题,元素实际上没有及时加载selenium来定位它。您可能必须考虑添加显式等待,您可以使用它来设置selenium定位指定页面元素之前的秒数。这就是为什么你没有看到" nolinks"输出,因为它出错了。
上下文: https://selenium-python.readthedocs.io/waits.html#explicit-waits