selenium
-
selenium 基于浏览器自动化的一个模块
-
便携的获取网站中动态加载的数据(Ajax)
-
便携实现模拟登录
-
Google浏览器
- 驱动程序下载路径
- 确定版本映射关系
-
实例化浏览器对象 传入浏览器驱动程序
- bro = webdriver.Chrome(’./chromedriver.exe’)
-
编写自动操作代码
-
基于浏览器自动化的操作代码
- 发起请求:get(url)
- 标签定位: find系列方法
- 标签交互: send_keys('xxx)
- 执行js程序: excute_script(‘jsCode’)
- 前进,后退: back(),forward()
- 关闭浏览器: quit()
-
selenium 处理iframe
- 如果定位的标签是存在iframe标签之中的,则必须切换浏览器标签定位的作用域:
- bro.switch_to.frame(‘frame’s id’)
- 如果定位的标签是存在iframe标签之中的,则必须切换浏览器标签定位的作用域:
-
seleniu 模拟登录
from selenium import webdriver from time import sleep if __name__ == '__main__': bro = webdriver.Chrome('./chromedriver.exe') bro.get('https://mail.qq.com/') bro.switch_to.frame('login_frame') user = bro.find_element_by_id('u') password = bro.find_element_by_id('p') sleep(1) user.send_keys('309519959') sleep(1) password.send_keys('562') sleep(1) log_btn = bro.find_element_by_id('login_button') log_btn.click() sleep(3) bro.quit()
- 动作链(拖动):
from selenium.webdriver import ActionChains from selenium import webdriver from time import sleep if __name__ == '__main__': # 实例化浏览器对象 传入浏览器驱动程序 bro = webdriver.Chrome(executable_path='./chromedriver.exe') # 让浏览器发起一个指定url对应请求 url = 'https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable' bro.get(url) #切换iframe bro.switch_to.frame('iframeResult') div = bro.find_element_by_id('draggable') #实例化动作链对象 action = ActionChains(bro) #点击和长按 action.click_and_hold(div) for i in range(5): #perform 立即执行动作链操作 #move_by_offset(x,y) x水平,y竖直方向 action.move_by_offset(17,0).perform() sleep(0.5) action.release() bro.quit()
- 无头浏览器
from selenium import webdriver from time import sleep #实现无可视化界面 from selenium.webdriver.chrome.options import Options #实现规避检测 from selenium.webdriver import ChromeOptions # #实现无可视化界面的操作 # chrome_options = Options() # chrome_options.add_argument('--headless') # chrome_options.add_argument('--disable-gpu') #实现规避检测 option = ChromeOptions() option.add_experimental_option('excludeSwitches',['enable-automation']) option.add_argument('--headless') option.add_argument('--disable-gpu') # option.add_argument('--disable-gpu') #实现让selenium规避被检测的风险 bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option) #无可视化界面 phantomJs bro.get('https://www.baidu.com') print(bro.page_source) sleep(3) bro.quit()