16

そこで、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()

今質問:

  1. ログイン フォームを見つけて入力するのに 4 分ほどかかりました。プロセスをスピードアップするためにできることはありますか?

  2. ログインしたときに、エラーがないことを確認するにはどうすればよいですか? つまり、応答コードを確認するにはどうすればよいですか?

  3. ログイン後にスクレイピングを続行できるように、セレンで Cookie を保存するにはどうすればよいですか?

  4. Selenium を高速化する方法がない場合、ログインするための他の方法はありますか? (QuoraにはAPIがありません)

4

6 に答える 6

15

ChromeDriver を使用した Python selenium での find_elements_xxx 呼び出しが非常に遅いという同様の問題がありました。私は最終的に、find_element_xxx() 呼び出しの前に行った driver.implicitly_wait() 呼び出しに問題を突き止めました。私がそれを取り出したとき、私の find_element_xxx() 呼び出しはすぐに実行されました。

これで、find_elements_xxx() 呼び出しを行ったときに、これらの要素がそこにあったことがわかりましたしたがって、implicit_wait がこれらの操作の速度に影響を与える理由を想像することはできませんが、影響はありました。

于 2016-02-16T01:01:41.553 に答える
3

独自の setAttribute メソッドを使用してフォームの入力を固定できます。これは Java のコードです。

public void setAttribute(By locator, String attribute, String value) {
    ((JavascriptExecutor) getDriver()).executeScript("arguments[0].setAttribute('" + attribute
            + "',arguments[1]);",
            getElement(locator),
            value);
}
于 2013-07-05T12:51:43.523 に答える