浏览器崩溃页面检索循环,Python Selenium脚本

时间:2014-10-13 06:45:20

标签: python selenium webdriver

我写了这个简单的脚本 - 它只是从博客中提取图像并将其发布到Pinterest。它工作得很好,除了在大约43页后,浏览器挂起/冻结。

我想知道是否有某种"泄漏"导致事情失控?也许我可以在脚本中更改某些内容以使其在不崩溃的情况下运行?

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pickle
import os.path

import time
driver = webdriver.Firefox()

#START THE RACE

driver.get("https://www.pinterest.com/login/")
assert "Pinterest" in driver.title

#name
elem = driver.find_element_by_name("username_or_email")
elem.send_keys("someone@something.com")

#pass
elem = driver.find_element_by_name("password")
elem.send_keys("12345")

elem.send_keys(Keys.RETURN)

time.sleep(5)

new_url = 'something.com/something_else'
driver.get(new_url)
i=0

while(1):
    i=i+1
    print i

    time.sleep(5)

    driver.find_element_by_css_selector(".pin-it-btn-wrapper a").click();

    time.sleep(3)

    try:
        driver.find_element_by_css_selector('[data-pin-index="0"]').click();
    except:
        driver.find_element_by_css_selector("#prev_post a").click();

    time.sleep(3)

    handles = driver.window_handles

    if(handles):
        for handle in handles:
            driver.switch_to_window(handle)
            try:
                driver.find_element_by_css_selector('button.pinIt').click();                
                time.sleep(2)

            except:
                continue

    time.sleep(3) 

    if(handles):
        for handle in handles:
            driver.switch_to_window(handle)
            try:
                time.sleep(1)    
                driver.find_element_by_css_selector("#prev_post a").click();
                time.sleep(3)
                break
            except:
                continue   


#assert "No results found." not in driver.page_source
#driver.close()

脚本本身登录到pinterest,转到给定的网站,并开始抓取"之前的帖子"博客帖子的链接 - 推动" Pin it"按钮,选择图像,确认(单独窗口)然后跳回主窗口并启动另一页。

如上所述,我认为可能存在泄漏问题。在某个地方,它会在一段时间后引起轰动。

1 个答案:

答案 0 :(得分:0)

根据评论者的建议,只需更改每个实例:

time.sleep(3)

driver.implicitly_wait(3)

似乎有所帮助。我也更新到最新版本。