首页 > 解决方案 > Selenium - 谷歌旅行刮价格历史丢失

问题描述

我正在使用此 python 脚本返回 html,但它不返回价格历史记录(见屏幕截图)。使用非硒浏览器确实会返回带有价格的 html(即使没有通过简单的正则表达式扩展本节);chrome/safari/firefox 都可以,隐身也可以。

在此处输入图像描述

from selenium import webdriver
import time

url = 'https://www.google.com/flights?hl=en#flt=SFO.JFK.2021-06-01*JFK.SFO.2021-06-07'

options = webdriver.ChromeOptions()

driver = webdriver.Chrome(options=options)
driver.get(url)
time.sleep(10)
html = driver.page_source
print(html)

driver.quit() 

我无法确定它是否是 chromedriver 中的某些设置。之所以可以这样做,是因为目前有一个第 3 方抓取工具返回此数据。

试过这个无济于事。当您将 Selenium 与 chromedriver 一起使用时,网站可以检测到吗?

任何想法表示赞赏。

标签: pythonseleniumgoogle-chromeselenium-chromedriverselenium-firefoxdriver

解决方案


添加后,chrome_options.add_argument("--disable-blink-features=AutomationControlled")我开始看到这个块。不知道为什么它并不总是加载。

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

from selenium.webdriver.chrome.options import Options

url = 'https://www.google.com/flights?hl=en#flt=SFO.JFK.2021-06-01*JFK.SFO.2021-06-07'
chrome_options = Options()
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(executable_path='/snap/bin/chromium.chromedriver', chrome_options=chrome_options)
driver.get(url)
# wait = WebDriverWait(driver, 20)
# wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".EA71Tc.q7Eewe")))
time.sleep(10)
history = driver.find_element_by_css_selector(".EA71Tc.q7Eewe").get_attribute("innerHTML")
print(history)

此处返回完整块,包括所有标签名称。如您所见,我尝试了显式等待,但该块不可见。尝试添加另一个显式等待。


推荐阅读