我遇到了selenium webdriver运行时的问题。事实上,我正在打开一个包含10个网址的数组并抓取一些内容。
随着时间的推移和selenium打开第四个url,它变得非常慢......如果我让任务继续,它就无法完成,python因为超出运行时间而中止该过程。
想象一下,第一个网址需要1分钟,第二个需要1到2分钟,第三个4分钟,......然后就会中断。
我需要解决这个问题,我正在使用ipython notebook 2.7。
PS:您认为在不同标签中打开网址有帮助吗?
编辑:这就是我创建浏览器的方式:
chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2,
"profile.default_content_setting_values.notifications" : 2,}
chromeOptions.add_experimental_option("prefs",prefs)
chromeOptions.add_argument("--window-position=0,0")
browser = webdriver.Chrome(chrome_options=chromeOptions)
这是在数组的每个url中运行的任务:
browser.get(url)
lastHeight = browser.execute_script("return document.body.scrollHeight")
while True:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
newHeight = browser.execute_script("return document.body.scrollHeight")
if newHeight == lastHeight:
break
lastHeight = newHeight
start = 'Por '
end = ' com'
html_source = browser.page_source
soup = BeautifulSoup(html_source)
cl = soup.find_all('div', attrs={'class': 'cl'})
names = [None] * len(cl)
for i in range(len(cl)):
try: names[i] = re.search('%s(.*)%s' % (start, end), cl[i].text).group(1)
except: continue
photosof = list(set(names))
答案 0 :(得分:0)
不幸的是,硒的性能高度依赖于时间,它的下降速度非常快。我找到的唯一解决方案是关闭并重新打开驱动程序。