python - 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 一起使用时,网站可以检测到吗?
任何想法表示赞赏。
解决方案
添加后,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)
此处返回完整块,包括所有标签名称。如您所见,我尝试了显式等待,但该块不可见。尝试添加另一个显式等待。
推荐阅读
- react-native - 启动画面上的动画
- python - Python Tkinter 下拉菜单,根据先前选择的变量进行更改
- angular - Angular 包构建生成 if(false) {...} 块
- r - 使用 tidyverse,如何动态生成新列?
- python - 放置在models.py之外时,Django信号不起作用
- c# - Foundation.MonoTouchException 已被抛出,Objective-C 异常被抛出。名称:NSInvalidArgumentException
- java - 状态 500 – Java Servlet 上的内部服务器错误
- stress-testing - 以单独的吞吐量测试 k6 组
- c++ - C++ 中的受保护变量
- docker - 无法在 docker 系统上增加 github api 速率限制