selenium的用法


一、selenium概念

  用來完成瀏覽器自動化的相關操作

  使用程序編寫一系列的鍵盤、鼠標的相關操作(讓瀏覽器來完成), 當我們執行代碼時,就會觸發一系列的事件

二、selenium在爬蟲中的作用

  可以獲取動態加載的數據

三、selenium安裝

  pip install selenium

  下載瀏覽器驅動程序: http://chromedriver.storage.googleapis.com/index.html (找到最接近的版本)

四、selenium使用

  導包: from selenium import webdriver

  實例化某一款瀏覽器的驅動,獲取一個對象

  使用對象中的相關方法制定一系列的事件(鍵盤、鼠標的相關操作)

五、自動訪問百度

from selenium import webdriver

bro = webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get("https://www.baidu.com")

bro.close()

六、自動百度搜索劉德華案例

import time
from selenium import webdriver

bro = webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get("https://www.baidu.com")

# 1. 定位到輸入框
kw = bro.find_element_by_id("kw")

# 2. 鍵入劉德華關鍵字
kw.send_keys("劉德華")
time.sleep(5)

# 3. 定位到"百度一下"按鈕
input_key = bro.find_element_by_id("su")

# 4. 觸發點擊事件
input_key.click()
time.sleep(5)

bro.close()

七、爬取雪球網

from selenium import webdriver

bro = webdriver.Chrome('./chromedriver.exe')
bro.get('https://xueqiu.com')


# 獲取動態加載的數據
print(bro.page_source)

bro.quit()

八、爬取雪球網的更多數據

import time
from selenium import webdriver

bro = webdriver.Chrome('./chromedriver.exe')
bro.get('https://xueqiu.com')

js = "window.scrollTo(0, document.body.scrollHeight)" # 表示滾輪往下拖動一屏的高度

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

bro.execute_script(js)
time.sleep(2)

# 獲取動態加載的數據
print(bro.page_source)

bro.quit()

九、phantomJS

# phantomJS
import time
from selenium import webdriver

bro = webdriver.PhantomJS('./phantomjs.exe')
bro.get("https://www.baidu.com")

# 截圖
bro.save_screenshot('11.jpg')

# 1. 定位到輸入框
kw = bro.find_element_by_id("kw")

# 2. 鍵入劉德華關鍵字
kw.send_keys("劉德華")
time.sleep(2)

# 3. 定位到"百度一下"按鈕
input_key = bro.find_element_by_id("su")

# 4. 觸發點擊事件
input_key.click()

# 截圖
bro.save_screenshot('21.jpg')
time.sleep(2)

bro.close()

十、前進和后退

# 前進和后退
import time
from selenium import webdriver

bro = webdriver.Chrome(executable_path='./chromedriver.exe')

# 注意: bro對象只有將頁面完全加載完成之后,才會進行下一步的事件觸發
bro.get("https://www.baidu.com")
bro.get("https://www.taobao.com")
bro.get("https://www.jd.com")
time.sleep(2)

# 后退
bro.back()
time.sleep(2)

# 前進
bro.forward()
time.sleep(2)

bro.close()

十一、動作鏈(一)

# 動作鏈
import time
from selenium import webdriver
from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

# 定位到頁面中的iframe標簽內部,這樣才可以定位到它內部的標簽
bro.switch_to.frame("iframeResult")

# 實例化一個動作鏈對象,將瀏覽器對象加載到這個動作鏈對象中
actions = ActionChains(bro)
# 1. 定位“請拖拽我”標簽
source_tag = bro.find_element_by_id("draggable")
# 2. 點擊“請拖拽我”, 並拖動
actions.click_and_hold(source_tag)

for i in range(1, 6):
    actions.move_by_offset(50,0)
    time.sleep(1)

actions.perform()  # 執行所有動作鏈

time.sleep(2)

bro.close()

十二、動作鏈(二)

# 動作鏈
import time
from selenium import webdriver
from selenium.webdriver import ActionChains

bro = webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")

# 定位到頁面中的iframe標簽內部,這樣才可以定位到它內部的標簽
bro.switch_to.frame("iframeResult")

# 實例化一個動作鏈對象,將瀏覽器對象加載到這個動作鏈對象中
actions = ActionChains(bro)
# 1. 定位“請拖拽我”標簽
source_tag = bro.find_element_by_id("draggable")
target_tag = bro.find_element_by_id('droppable')

# 點擊並拖動,並丟棄
actions.click_and_hold(source_tag)
for i in range(1, 6):
    actions.move_by_offset(30,0)
    time.sleep(1)
actions.drag_and_drop(source_tag, target_tag)

actions.perform()  # 執行所有動作鏈

bro.close()

十三、獲取cookie

# 獲取cookie
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

browser = webdriver.Chrome('./chromedriver.exe', options=option)
browser.get('https://www.baidu.com')
print(browser.get_cookies())

# browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'})
# print(browser.get_cookies())

# browser.delete_all_cookies()
# print(browser.get_cookies())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM