Python爬蟲之PhantomJS和handless的使用詳解
1、PhantomJS的使用
PhantomJS 簡介
PhantomJS 是一個基于Webkit的“無界面”(headless)瀏覽器,它會把網(wǎng)站加載到內(nèi)存并使用webkit來編譯解釋執(zhí)行頁面上的JavaScript代碼,由于不進行css和gui渲染、不展示圖形界面,所以運行起來比完整的瀏覽器要高效。
如果把 Selenium 和 PhantomJS 結(jié)合在一起使用,就能實現(xiàn)一個能力非常強大的網(wǎng)絡(luò)爬蟲了,這個爬蟲可以處理JavaScript、Cookie、headers,以及任何我們真實用戶需要做的事情。
PhantomJS 下載
下載方式:PhantomJS 只能從它的官方網(wǎng)站下載,因為 PhantomJS 是一個功能完善的無界面瀏覽器而并非一個 Python 庫,所以 PhantomJS 不像 Python 的其他庫一樣使用 pip 命令安裝。
使用方式:下載 PhantomJS 壓縮包后解壓得到 phantomjs.exe,把 phantomjs.exe 放到 python 當前項目目錄下,通過Selenium調(diào)用PhantomJS來直接使用。
PhantomJS 的使用
代碼實例:
import time from selenium import webdriver path = 'phantomjs.exe' # 通過Selenium的webdriver調(diào)用PhantomJS driver = webdriver.PhantomJS(path) driver.get("http://www.baidu.com/") # 獲取頁面名為 wrapper的id標簽的文本內(nèi)容 data = driver.find_element_by_id("wrapper").text # 打印數(shù)據(jù)內(nèi)容 print(data) # 打印頁面標題 "百度一下,你就知道 print(driver.title) # 生成當前頁面快照并保存 driver.save_screenshot("baidu.png") time.sleep(2) # 定位百度搜索輸入框,輸入字符串"王維家" driver.find_element_by_id("kw").send_keys("王維家") # 清除輸入框的內(nèi)容 driver.find_element_by_id("kw").clear() # 定位百度搜索輸入框,輸入字符串"毛不易" driver.find_element_by_id("kw").send_keys("毛不易") # 定位百度搜索按鈕并點擊 driver.find_element_by_id("su").click() # 獲取新的頁面快照并保存 driver.save_screenshot("maobuyi.png") # 輸出網(wǎng)頁渲染后的源代碼 # print(driver.page_source) # 清除輸入框的內(nèi)容 driver.find_element_by_id("kw").clear() # 輸入框重新輸入內(nèi)容 “福祿壽” driver.find_element_by_id("kw").send_keys("福祿壽") # 提交搜索 driver.find_element_by_id("kw").submit() time.sleep(2) # 生成新的頁面快照 driver.save_screenshot("福祿壽.png") # 獲取當前url print(driver.current_url) # 關(guān)閉當前頁面,如果只有一個頁面,會關(guān)閉瀏覽器 driver.quit()
執(zhí)行結(jié)果:
新聞hao123地圖貼吧視頻圖片網(wǎng)盤更多
設(shè)置登錄
換一換
中國邁入創(chuàng)新型國家行列
3全年糧食奪取豐收有支撐
1鼓勵生三孩 17部門聯(lián)合發(fā)文
熱
431省份昨日新增本土“566+2322”
2要求4省完成財政上繳任務(wù)有何深意?
熱
5孩子高鐵上吵鬧 乘客提醒被家長懟
關(guān)于百度About Baidu使用百度前必讀幫助中心
百度一下,你就知道
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E7%A6%8F%E7%A6%84%E5%AF%BF&fenlei=256&rsv_pq=b11a858d007a15c5&rsv_t=498aJh0m9WbICve1EXCXZCzDY41aZM9AIwgaD3J2LU5gCAb3ULnF%2BVi1DgJU&rqlang=en&rsv_enter=0&rsv_dl=tb&rsv_btype=t&inputT=28&rsv_sug3=9&rsv_sug4=29&rsv_jmp=fail
2、Chrome handless
Chrome handless 模式:由于新版本的 selenium 已經(jīng)棄用 PhantomJs,PhantomJs也停止了更新和維護,所以推薦使用谷歌的Chrome handless模式(無頭模式),這是一款無界面的谷歌瀏覽器,可以讓使用者在不打開UI界面的情況下使用Chrome瀏覽器,并且運行效果與真實的Chrome瀏覽器一樣,但是性能更高。
使用要求:
- Windows系統(tǒng)chrome版本>=60
- Linux系統(tǒng)chrome版本>=59
- python版本>=3.6
- selenium>=3.4
- chromeDriver>=2.31
handless 使用實例
代碼實例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time # 配置 handless 方法 def create_handless(): # 創(chuàng)建一個參數(shù)對象,用來控制chrome以無界面模式打開 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') # chrome瀏覽器文件路徑 path = r'.C:\Program Files\Google\Chrome\Application\chromedriver.exe' chrome_options.binary_location = path # 創(chuàng)建瀏覽器對象 browser = webdriver.Chrome(chrome_options=chrome_options) return browser # 訪問百度 url = 'http://www.baidu.com/' browser = create_handless() browser.get(url) time.sleep(2) browser.save_screenshot('baidu.png') # 截取圖片 browser.quit()
到此這篇關(guān)于Python爬蟲之PhantomJS和handless的使用詳解的文章就介紹到這了,更多相關(guān)Python的PhantomJS和handless內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python的凈值數(shù)據(jù)接口調(diào)用示例分享
這篇文章主要介紹了Python的凈值數(shù)據(jù)接口調(diào)用示例分享的相關(guān)資料,需要的朋友可以參考下2016-03-03完美處理python與anaconda環(huán)境變量的沖突問題
這篇文章主要介紹了完美處理Python與anaconda環(huán)境變量的沖突問題,對anaconda感興趣的同學(xué),可以參考下2021-04-04django中使用POST方法獲取POST數(shù)據(jù)
這篇文章主要介紹了django中使用POST方法獲取POST數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Python中dumps與dump及l(fā)oads與load的區(qū)別
這篇文章主要介紹了Python中dumps與dump、loads與load的區(qū)別,json模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。其中兩個主要的函數(shù)是json.dumps()和json.loads(),需要的朋友可以參考下2022-04-04