我想在Python中使用Selenium webdriver解析网页中的价格列表。所以,我尝试使用此代码
获取所有DOM元素url = 'https://www.google.com/flights/explore/#explore;f=BDO;t=r-Asia-0x88d9b427c383bc81%253A0xb947211a2643e5ac;li=0;lx=2;d=2018-01-09'
driver = webdriver.Chrome()
driver.get(url)
print(driver.page_source)
我从page_source
获得的问题与我在被视元素中看到的不同
<div class="CTPFVNB-f-a">
<div class="CTPFVNB-f-c"></div>
<div class="CTPFVNB-f-d elt="toolbelt"></div>
<div class="CTPFVNB-f-e" elt="result">Here is the difference</div>
</div>
CTPFVNB-f-e
类中存在差异。在经过检查的DOM元素中,此标记包含我要获取的所有价格。但是,在page_source
的结果中,这部分缺失了。
有人能告诉我我的代码有什么问题吗?或者我是否需要进一步的步骤来解析价格清单?
答案 0 :(得分:2)
JavaScript正在加载页面后修改页面。当您在打开页面后立即打印页面源时,您将获得初始代码而无需执行JavaScript。
您可以执行以下任何一项操作:
time.sleep(x)
(根据您的要求更改x
值。以秒为单位)(不推荐)< / LI>
driver.implicitly_wait(x)
(再次x
与上述相同)使用显式等待是更好的选项,因为它只等待元素变得可见所需的时间。因此不会导致任何超额延迟。或者,如果页面加载速度低于预期,则无法使用隐式等待获得所需的输出。