selenium的基本使用

selenium

  • 概念: 基于浏览器自动化的一个模块,

    • Appnium是基于手机的自动化模块

  • 作用

    • 便捷的爬取到动态加载的数据,可见即可得

    • 便捷的实现模拟登陆,

  • 动作链

    •  from selenium.webdriver import ActionChains #动作连的类
    •  #基于动作连实现滑动操作
       action = ActionChains(bro)
       #点击且长按
       action.click_and_hold(div_tag)
       
       for i in range(5):
          #perform()表示让动作连立即执行
          action.move_by_offset(20,20).perform()
          sleep(0.5)
    • 在使用find系列的函数进行标签定位的时候如果出现了NoSuchElementException如何处理?

      • 如果定位的标签是存在于iframe标签之下的,则在进行指定标签定位的时候 必须使用switch_to.frame()的操作才可。

      •  bro.switch_to.frame('iframeResult') #frame的参数为iframe标签的id属性值
  • 无头浏览器

    •  from selenium.webdriver.chrome.options import Options
       # 创建一个参数对象,用来控制chrome以无界面模式打开
       chrome_options = Options()
       chrome_options.add_argument('--headless')
       chrome_options.add_argument('--disable-gpu')
  • 如何规避selenium被监测到的风险

    • 网站可以根据:window.navigator.webdriver的返回值鉴定是否使用了selenium

    • undefind:正常

    • true:selenium

    •  #通过加参数让window。navigateor。webdriver返回值为undefined,规避监测
       rom selenium.webdriver import ChromeOptions
       
       option = ChromeOptions()
       option.add_experimental_option('excludeSwitches', ['enable-automation'])
       
       
       # 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
       bro = webdriver.Chrome(r'chromedriver.exe',options=option)
  • 示例

    •  from selenium import webdriver
       import time
       #实例化某一款浏览器对象
       bro = webdriver.Chrome(executable_path='chromedriver.exe')
       
       #基于浏览器发起请求
       bro.get('https://www.jd.com/')
       
       #商品搜索
       #标签定位
       search_input = bro.find_element_by_id('key')
       #往定位到的标签中录入数据
       search_input.send_keys('袜子')
       #点击搜索按钮
       btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button')
       time.sleep(2)
       btn.click()
       time.sleep(2)
       #滚轮滑动(js注入)
       bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
posted @ 2020-03-23 09:33  恰蜜小嘴  阅读(170)  评论(0编辑  收藏  举报