1. 程式人生 > >Python—selenium模塊(瀏覽器自動化工具)

Python—selenium模塊(瀏覽器自動化工具)

滾輪 展示 人民幣 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模塊(瀏覽器自動化工具)