Selenium是慢的还是我的代码错了?

KGo*_*KGo 14 python selenium http ui-automation selenium-webdriver

所以我试图使用Python登录Quora,然后刮掉一些东西.

我正在使用Selenium登录该网站.这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get('http://www.quora.com/')

username = driver.find_element_by_name('email')
password = driver.find_element_by_name('password')

username.send_keys('email')
password.send_keys('password')
password.send_keys(Keys.RETURN)

driver.close()
Run Code Online (Sandbox Code Playgroud)

现在的问题是:

  1. 找到并填写登录表单需要大约4分钟,这非常缓慢.我能做些什么来加快这个过程吗?

  2. 登录时,如何确保没有错误?换句话说,我如何检查响应代码?

  3. 如何用硒保存饼干,以便我可以在登录后继续抓取?

  4. 如果没有办法让硒更快,那还有其他的登录方式吗?(Quora没有API)

Pol*_*lly 11

我使用ChromeDriver在Python selenium中使用非常慢的find_elements_xxx调用时遇到了类似的问题.我最终找到了我在find_element_xxx()调用之前调用的driver.implicitly_wait()调用的麻烦; 当我拿出它时,我的find_element_xxx()调用很快就会运行.

现在,当我进行find_elements_xxx()调用时,我知道那些元素存在.所以我无法想象为什么implicit_wait应该影响这些操作的速度,但确实如此.


小智 3

  1. 我去过那里,硒很慢。填一张表格可能不会慢到4分钟。然后我开始使用 phantomjs,它比 Firefox 快得多,因为它是无头的。安装最新的 phantomjs 后,您只需在 webdriver 行中将 Firefox() 替换为 PhantomJS() 即可。

  2. 要检查您是否已登录,您可以断言登录后显示的某些元素。

  3. 只要您不退出驱动程序,cookie 就可以用于跟踪链接

  4. 您可以尝试使用 urllib 并直接发布到登录链接。您可以使用 cookiejar 来保存 cookie。你甚至可以简单地保存cookie,毕竟cookie只是http header中的一个字符串