爬蟲-使用模擬瀏覽器操作(截取網頁)


最近遇到一個問題就是,如何模擬真實瀏覽器行為然后截取顯示的網頁。

方案

  1. 模擬登陸網站或者直接使用cookie登陸。
  2. 對指定頁面按鈕進行點擊刷新頁面,截取網頁。

我們使用selenium庫來操作瀏覽器驅動,即執行瀏覽器相應的驅動命令,實現相應的瀏覽器操作。


准備工作

  • selenium庫
    瀏覽器自動化測試框架,其作用是通過操作瀏覽器驅動來控制瀏覽器行為,達到模擬真實用戶操作瀏覽器的效果。原理為自動化測試python腳本-->瀏覽器driver -->瀏覽器。官網 python中文文檔 python官方文檔
    python安裝
pip install -U selenium 安裝並更新
  • 瀏覽器驅動
    selenium需要下載對應的瀏覽器驅動才能操作計算機中已經安裝好的瀏覽器。下載對應驅動版本exe文件后,將其放入python安裝路徑的scripts目錄即可,注意驅動版本要和瀏覽器版本匹配。
    chrome驅動: 下載地址 備用地址

  • Phantomjs瀏覽器
    它是基於webkit瀏覽器的無頭瀏覽器,下載安裝完成並設置系統環境變量。selenium支持直接調用。官方下載地址。截圖的圖片為長圖(網頁全部展開)。


使用方法

以chrome瀏覽器為例

  • 簡單用例
from selenium import webdriver  #導入驅動模塊

driver =webdriver.Chrome()       #創建相應瀏覽器驅動對象
driver.get("http://www.baidu.com")  #使用驅動對象打開網站
  • 操作cookie
cookie = {‘name': foo', 'value': 'bar’} 
driver.add_cookie(cookie)

driver.get_cookies()
  • 獲取元素
    已知元素定義
    <input type="text" name="passwd" id="passwd-id" />
    可以通過以下方法獲取元素
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element.find_elements_by_tag_name("option")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")

  • 輸入內容
element.send_keys("some text")
element.send_keys(" and some", Keys.ARROW_DOWN) 使用Keys類來模擬輸入方向鍵
element.clear() 清除文本內容

element.click() 點擊
  • 等待頁面加載完成

  • 處理對話框

 alert = drvier.switch_to_alert()
  • 關閉瀏覽器
driver.quit() #關閉這個瀏覽器
driver.close() #關閉當前界面
  • 截取網頁圖片
    driver.save_screenshot('1.png')

實際操作用例

參考文章

Python爬蟲學習筆記13】使用Selenium模擬瀏覽器行為

selenium 入門筆記

使用python模擬瀏覽器實現登陸

Selenium-Python中文文檔

python爬蟲:使用Selenium模擬瀏覽器行為


免責聲明!

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



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