使用Selenium和Python自动化时页面加载失败

zqdjd7g9  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(199)

我对Selenium和Python都是新手。我想airCanada.ca使用Selenium,Python,Chrome浏览器和Chrome驱动程序从旅游网站www.example.com中获取一些信息。当我尝试使用Selenium加载一个示例页面时,页面永远挂起,永远不会加载。当我直接将相同的URL复制到浏览器中时,页面加载没有任何问题。我也试过类似的加载其他一些旅游网站,如Kayak,但没有问题加载这些网页。可能有一个明显的解决方案,但我不知道下一步会是什么。下面是一个示例代码片段:

  1. SAMPLE_URL = "https://www.aircanada.com/aeroplan/redeem/availability/outbound?org0=YTO&dest0=LGA&departureDate0=2023-11-01&lang=en-CA&tripType=O&ADT=1&YTH=0&CHD=0&INF=0&INS=0&marketCode=TNB"
  2. os.environ['PATH'] +=r";C:/SeleniumDrivers/chromedriver-win64/"
  3. driver = webdriver.Chrome()
  4. driver.implicitly_wait(30)
  5. driver.get(SAMPLE_URL)
  6. time.sleep(20)

我的浏览器和驱动程序都是最新的。我也尝试过使用微软Edge浏览器和驱动程序,但我遇到了同样的问题。

svujldwt

svujldwt1#

本网站包含反报废机制。
要传递它,可以尝试使用Undetected Chromedriver
它是一个可以绕过大多数反报废方法的驱动程序,如Cloudflare等。
Reference

  1. import undetected_chromedriver as uc
  2. SAMPLE_URL="https://www.aircanada.com/aeroplan/redeem/availability/outbound?org0=YTO&dest0=LGA&departureDate0=2023-11-01&lang=en-CA&tripType=O&ADT=1&YTH=0&CHD=0&INF=0&INS=0&marketCode=TNB"
  3. driver = uc.Chrome()
  4. driver.get(SAMPLE_URL)
mm5n2pyu

mm5n2pyu2#

您可以在uc模式下使用https://github.com/seleniumbase/SeleniumBase来绕过网站上的防 selenium 脚本。
pip install seleniumbase,然后运行python

  1. from seleniumbase import Driver
  2. driver = Driver(uc=True)
  3. try:
  4. driver.get("https://www.aircanada.com/aeroplan/redeem/availability/outbound?org0=YTO&dest0=LGA&departureDate0=2023-11-01&lang=en-CA&tripType=O&ADT=1&YTH=0&CHD=0&INF=0&INS=0&marketCode=TNB")
  5. driver.click('span[aria-label="Close"]', timeout=15)
  6. print(driver.get_text("kilo-upsell-cont"))
  7. finally:
  8. driver.quit()

它会关闭弹出窗口,然后打印出详细的航班搜索细节。(注意seleniumbase driver比标准selenium driver有更多的方法)

相关问题