Python—selenium模塊(瀏覽器自動化工具)
阿新 • • 發佈:2019-05-13
滾輪 展示 人民幣 google key bdr cut googl add
selenium可以用來完成瀏覽器自動化相關的操作,寫一些代碼制定一些基於瀏覽器自動化的相關操作(行為動作),當代碼執行後,瀏覽器就會自動觸發相關的事件
安裝方法:
- pip install selenium
- 下載對應瀏覽器的驅動程序
- 谷歌瀏覽器驅動下載地址:
https://chromedriver.storage.googleapis.com/index.html
https://npm.taobao.org/
- 根據瀏覽器版本選擇對應的驅動版本(網上查)
代碼流程:
- 導入模塊:from selenium import webdriver
- 實例化一個瀏覽器對象:webdriver.Chrome(executable_path=‘./chromedriver.exe‘) ,參數為瀏覽器驅動路徑;
- 寫上要訪問的網址:bro.get("https://xueqiu.com/")
瀏覽器相關操作:
執行js實現滾輪向下
移動到頁面最底部(如果是動態加載的數據及第一次加載完成的地方):
js = "window.scrollTo(0,document.body.scrollHeight)"
定位標簽,向標簽裏寫參數
tag_input = bro.find_element_by_id(‘kw‘)
tag_input.send_keys(‘人民幣‘)
截屏
bro.save_screenshot(‘1.png‘)
獲取頁面數據
獲取動態加載的數據:bro.page_source
基於xpath獲取標簽:a_tag = bro.find_element_by_xpath("xpath表達式")
點擊事件:a_tag.click() 單擊鼠標左鍵一下
網頁的前進和後退
bro.back() 後退
bro.forward() 前進
網頁前進後退代碼
谷歌無頭瀏覽器
如不想感知到瀏覽器操作,可讓瀏覽器在後臺操作
#谷歌無頭瀏覽器 from selenium import webdriver from time import sleep from selenium.webdriver.chrome.options import谷歌無頭瀏覽器代碼Options # 創建一個參數對象,用來控制chrome以無界面模式打開 chrome_options = Options() chrome_options.add_argument(‘--headless‘) chrome_options.add_argument(‘--disable-gpu‘) bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘,options=chrome_options) bro.get(‘https://www.baidu.com‘) sleep(2) bro.save_screenshot(‘1.png‘) #標簽定位 tag_input = bro.find_element_by_id(‘kw‘) tag_input.send_keys(‘人民幣‘) sleep(2) btn = bro.find_element_by_id(‘su‘) btn.click() sleep(2) print(bro.page_source) bro.quit()
動作鏈
如果定位的標簽存在於iframe標簽之中,則必須經過switch_to操作在進行標簽定位
#動作鏈 from selenium import webdriver from time import sleep from selenium.webdriver import ChromeOptions from selenium.webdriver import ActionChains option = ChromeOptions() option.add_experimental_option(‘excludeSwitches‘, [‘enable-automation‘]) bro = webdriver.Chrome(executable_path=‘./chromedriver.exe‘,options=option) url = ‘https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable‘ bro.get(url=url) #如果定位的標簽存在於iframe標簽之中,則必須經過switch_to操作在進行標簽定位 bro.switch_to.frame(‘iframeResult‘) source_tag = bro.find_element_by_id(‘draggable‘) taget_tag = bro.find_element_by_id(‘droppable‘) #創建一個動作連的對象 action = ActionChains(bro) action.drag_and_drop(source_tag,taget_tag) action.perform() sleep(3) # bro.quit()動作鏈代碼展示
Python—selenium模塊(瀏覽器自動化工具)