Python - javascript web scraping with selenium does not work properly

2024-09-29 01:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从一个航班搜索网页上获取一些数据。它可能是用Javascript生成的。我试过很多方法,但都不管用,所以我决定试试硒。在

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://www.pelikan.sk/sk/flights/list?dfc=CVIE%20BUD%20BTS&dtc=CMAD&rfc=CMAD&rtc=CVIE%20BUD%20BTS&dd=2015-07-09&rd=2015-07-14&px=1000&ns=0&prc=&rng=1&rbd=0&ct=0')
print driver.page_source

虽然它返回最终javascript生成的html代码,但在浏览器中打开它时,我找不到这个页面上的字符串。在

问题出在哪里?我该怎么办才能得到那些航班?在

编辑:我忘了提到页面一直在加载新的航班。因此,当你在浏览器中打开它时,它会显示一些航班,但它仍然会加载其他航班。在


Tags: 数据方法fromimport网页driverselenium浏览器
1条回答
网友
1楼 · 发布于 2024-09-29 01:36:14

页面具有相当强的动态性,您需要wait for the page to load。请选择一个指示页面和搜索结果已加载的内容。例如,等待加载图像(带有鹈鹕)变为invisible

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Firefox()
driver.get("https://www.pelikan.sk/sk/flights/list?dfc=CVIE%20BUD%20BTS&dtc=CMAD&rfc=CMAD&rtc=CVIE%20BUD%20BTS&dd=2015-07-09&rd=2015-07-14&px=1000&ns=0&prc=&rng=1&rbd=0&ct=0")

wait = WebDriverWait(driver, 60)
wait.until(EC.invisibility_of_element_located((By.XPATH, '//img[contains(@src, "loading")]')))
wait.until(EC.invisibility_of_element_located((By.XPATH, u'//div[. = "Poprosíme o trpezlivosť, hľadáme pre Vás ešte viac letov"]/preceding-sibling::img')))

print(driver.page_source)

在这里,我们等待着两只鹈鹕飞走消失:一只大的,一只小的。在

相关问题 更多 >