【发布时间】:2018-09-01 05:59:35
【问题描述】:
我正在收集来自website 的链接。我遍历它拥有的页面,并在每个页面上检索链接:
links = driver.find_elements_by_xpath('//*[contains(@class, "m_rs_list_item_main")]/div[1]/div[1]/a')
现在...有时网站会出现故障并且没有显示应有的链接。例如,它通常说:
链接1
链接2
...
链接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 不会永远搜索那些不存在的链接?
【问题讨论】:
-
@VladimirVargas 当我尝试访问website 时收到
This request was blocked by the security rules的消息。我们有其他选择吗?谢谢 -
它看起来像一个特定页面或某个页面需要很长时间才能加载它。您可以设置页面加载超时。我不认为这是因为 find 元素默认是隐式等待的,如果它没有找到任何元素,它不会等到你设置隐式超时。