selenium携程酒店评论看不见

使用selenium登录账号访问携程酒店时看不见评论,这是为什么。是被检测到使用webdriver了吗?

img

这种应该都会做反爬虫吧

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7696987
  • 你也可以参考下这篇文章:selenium爬虫,selenium自动测试,WebDriver
  • 除此之外, 这篇博客: 解决selenium模拟浏览器爬取(淘宝、微博等需要登陆验证的网站)多次登陆问题中的 程序就会在打开的浏览器下打开需要爬取的网址,并且只需要登陆一次,就不必多次登录 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如果想实现静默状态下,即不显示浏览器界面,可添加参数

    chrome_option.add_argument('headless')
    
  • 您还可以看一下 王春燕老师的基于java的selenium3自动化测试完整教程课程中的 安装WebDriver小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料和问题描述,可能是由于携程检测到了使用Selenium进行自动化操作,导致无法正常访问。解决方案可以考虑以下几点:

    1. 使用WebDriver识别的绕过方法,将navigator.webdriver的返回值改为false或者undefind,代码如下:
    script = 'Object.defineProperty(navigator,"webdriver",{get:() => false,});'
    brower.execute_script(script)
    

    这么做可以绕过携程对Selenium的检测,使得自动化操作变得正常。需要注意的是,这种方式只在当前页面有效,也就是说,当浏览器打开新标签或新窗口时,需要重新执行改变navigator.webdriver值的JavaScript代码。

    1. 通过多层框架/窗口定位,有时候元素虽然定位器没问题,但却一直定位不了,可能是这个元素在一个frame中。Selenium WebDriver提供了一个switch_to_frame方法,可以很轻松地来解决这个问题。例如:
    browser.switch_to_frame("f1")
    browser.switch_to_frame("f2")
    
    1. 指定浏览器位置,设定左边距和上边距,如下:
    chrome_options.add_argument(f'--window-position={100},{200}')
    
    1. 使用已打开的浏览器,可以在chrome浏览器所在目录执行命令,如下:
    chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
    

    然后在代码中加入下面的配置即可使用刚刚打开的浏览器了:

    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    

    这可以避免浏览器被检测出是自动化程序,更好地爬取数据。同时,基于该运行浏览器所产生的缓存、cookie等数据都会被记录,下次启动浏览器时可直接使用,避免因为没有缓存导致页面加载时间过长。