2017-06-06 9 views
0

私はWebクローズしようとしていますthis website。表示されているように、開封時に最初に間違ったページが2,3秒間表示されてから、興味のある実際のページを読み込みます。Seleniumでソースを返す前に待っています(タイムアウト()ではありません)

わかりやすくするために、 First/wrong pagesecond, right page

予想したように、BeautifulSoupまたはRequestsを使用して、私は唯一の「最初のページ」のHTMLではなく「正しい」のページを取得するために管理します。

私はSeleniumset_page_load_timeout()を使用しようとしましたが、実際のページの代わりに「最初/間違った」ページのみが返されます。

driver = webdriver.Chrome() 
driver.set_page_load_timeout(7) 
url = 'https://images.nga.gov/en/search/do_quick_search.html?q=%221949.7.1%22' 
driver.get(url) 
source = BeautifulSoup(driver.page_source, 'html.parser') 
print(source) 

私は、関連する質問を探してみましたが、彼らはすべてのページがロードされているので、ここでの問題ではないようですタイムアウトを、設定について、それは私がしたいだけではないページのです。

7秒後にsourceを取得する方法はありますか?あなたが必要なページが開かれたときtitle_is()expected conditionは、特定の瞬間を待つために使用できる

答えて

1

(すなわちソースを取得し、代わりの7秒後にタイムアウトを持つ前に7秒を待っている)(ページタイトルは"Just a moment..."から"National Gallery of Art | NGA Images"に変更):

from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait as wait 


driver = webdriver.Chrome() 
url = 'https://images.nga.gov/en/search/do_quick_search.html?q=%221949.7.1%22' 
title = "National Gallery of Art | NGA Images" 
driver.get(url) 
wait(driver, 10).until(EC.title_is(title)) 
source = BeautifulSoup(driver.page_source, 'html.parser') 
print(source) 
+0

ここで10のwait()はタイムアウトですか?私。 x秒後にECが真であれば、x <10の間、ECは続くでしょうか? –

+1

はい、10秒はタイムアウトです。 10秒後にタイトルが変わらない場合は、 'TimeOutException'を取得します。 – Andersson

関連する問題