簡體   English   中英

Python-使用Selenium進行JavaScript網絡抓取無法正常工作

[英]Python - javascript web scraping with selenium does not work properly

我正在嘗試從一個航班搜索網頁上抓取一些數據。 它可能是用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代碼,但是在瀏覽器中打開該頁面時,找不到該頁面上的字符串。

問題可能出在哪里? 我該怎么做才能得到那些航班?

編輯:我忘了提到頁面正在不斷加載新的航班。 因此,當您在瀏覽器中打開它時,它會顯示一些航班,但仍在加載其他航班。

該頁面具有很強的動態性 ,您需要等待頁面加載 選擇一些指示頁面和搜索結果已加載的內容。 例如,等待直到加載的圖像(帶有鵜鶘)變得不可見

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)

在這里,我們正在等待兩只鵜鶘飛走消失:一個較大的鵜鶘和一個較小的鵜鶘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM