我正在使用selenium抓取网页。我首先找到我想要的链接,然后点击它并下载它(链接是pdf)。发生的事情有时我能够这样做,但有时候selenium说找不到链接。我想这是由于页面加载不正确。我能做些什么呢?我正朝着正确的方向前进吗?
这是我以前的代码:
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 :(得分:0)
我认为你应该使用显式等待告诉selenium等到特定元素正确加载,在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秒才能找到那个特定的元素。