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