我正在尝试网络浏览this website。正如您所看到的,在打开之后,它会首先显示第一个错误的页面几秒钟,然后加载我感兴趣的实际右页。
为清楚起见。 First/wrong page和second, right page
正如所料,使用BeautifulSoup
或Requests
我只设法获取“第一页”的html,而不是“正确”页面。
我尝试使用Selenium
和set_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
? (即在获取源之前等待7秒,而不是在7秒后超时)
答案 0 :(得分:1)
您可以使用title_is()
expected condition等待特定时刻打开所需页面(页面标题从"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)