Python爬蟲教程-28-Selenium 操縱 Chrome

肖朋偉發表於2018-09-06

我覺得本篇是很有意思的,閒著沒事來看看!

Python爬蟲教程-28-Selenium 操縱 Chrome

PhantomJS 幽靈瀏覽器,無介面瀏覽器,不渲染頁面。Selenium + PhantomJS 在之前是很完美的搭配。後來在 2017 年 Google 宣佈 Chrome 也宣佈支援不渲染。所以 PhantomJS 使用的人就越來越少了,挺可惜,本篇介紹 Selenium + Chrome

安裝Chrome瀏覽器和 Chromedriver

  • 安裝 Chrome 瀏覽器就不介紹了
  • 安裝 Chromedriver:
  • 注意:Chromedriver 需要根據自己的 Chrome 版本下載:
    • Chromedriver 所有版本下載地址:http://npm.taobao.org/mirrors/chromedriver/
    • 相容版本請參照:Chrome版本與chromedriver相容版本對照表
    • 下載解壓即可,當然如果你解壓到自己定義的目錄,就需要配置一下環境,去環境變數,在 Path 加一條 Chromedriver 的安裝目錄
    • 如果你嫌配置環境變數太麻煩,就直接把它放到一個已經配置好環境變數的目錄,比如 C:\Program Files (x86)

安裝 Chromedriver-binary 包

  • 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【BeautifulSoup4】>【install】
  • 具體操作截圖:
    這裡寫圖片描述
    安裝好就可以盡情使用了

Selenium 操作

  • Selenium 操作主要分兩大類:
    • 得到 UI 元素
      • find_element_by_id
      • find_elements_by_name
      • find_elements_by_xpath
      • find_elements_by_link_text
      • find_elements_by_partial_link_text
      • find_elements_by_tag_name
      • find_elements_by_class_name
      • find_elements_by_css_selector
    • 基於 UI 元素操作的模擬
      • 單擊
      • 右鍵
      • 拖拽
      • 輸入
      • 可以通過 ActionsChains類來做到

        案例 29chromedriver

  • 案例 29chromedriver.py 程式碼檔案:
    https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py29chromedriver.py
# Selenium + Chrome 案例1
from selenium import webdriver

# 路徑是自己解壓安裝 Chromedriver 的路徑
driver = webdriver.Chrome()

url = "http://www.baidu.com"

driver.get(url)

# 根據id查詢,後面加.text 表示拿看到的文字資料
text = driver.find_element_by_id('wrapper').text
print(text)

執行結果

1.控制檯:列印出來了我們想要的能看到的文字
這裡寫圖片描述
2.我們可以看到:執行程式自動開啟了一個 Chrome 瀏覽器的視窗,並提示 Chrome 正受到自動檢測軟體的控制
這裡寫圖片描述
此時,既然已經控制了瀏覽器,我們就可以進行更多操作了

重要案例 29chromedriver2.py

# Selenium + Chrome 案例2
# 開啟的瀏覽器可能會彈窗,點選【取消】或者【不管它】都行
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

# 預設不需要路徑,如果沒有環境變數就需要加上
driver = webdriver.Chrome()

url = "http://www.baidu.com"

driver.get(url)

# 根據id查詢,後面加.text 表示拿看到的文字資料
text = driver.find_element_by_id('wrapper').text

print(driver.title)

# 對頁面截圖,儲存為 baidu.png
driver.save_screenshot('py29baidu.png')

# 控制 Chrome 在輸入框輸入大熊貓
driver.find_element_by_id('kw').send_keys(u"大熊貓")
# 單擊搜尋按鈕,id = 'su'
driver.find_element_by_id('su').click()

# 緩衝5秒,讓頁面載入圖片等
time.sleep(5)
# 截圖,儲存
driver.save_screenshot("py29daxiongmao.png")

# 獲取當前頁面的 cookie 常用在需要登入的頁面
print(driver.get_cookie('cookie'))

# 模擬 按下兩個按鍵 Ctrl + a
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
# 模擬 按下兩個按鍵 Ctrl + c
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')

執行結果

執行程式碼,會自動開啟瀏覽器,自動輸入大熊貓,自動截圖並儲存,然後選中輸入框內容,然後拷貝
這裡寫圖片描述
是不是很神奇,儲存的截圖和程式碼同級目錄

更多文章連結:Python 爬蟲隨筆


  • 本筆記不允許任何個人和組織轉載

相關文章