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實現(xiàn)對特定列表進行從小到大排序操作示例
這篇文章主要介紹了Python實現(xiàn)對特定列表進行從小到大排序操作,涉及Python文件讀取、計算、正則匹配、排序等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
Windows平臺Python連接sqlite3數(shù)據(jù)庫的方法分析
這篇文章主要介紹了Windows平臺Python連接sqlite3數(shù)據(jù)庫的方法,結(jié)合實例形式分析了Windows平臺安裝SQLite數(shù)據(jù)庫及創(chuàng)建、連接數(shù)據(jù)庫的實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下2017-07-07
python實現(xiàn)UDP協(xié)議下的文件傳輸
這篇文章主要為大家詳細介紹了python實現(xiàn)UDP協(xié)議下的文件傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03
scrapy-redis源碼分析之發(fā)送POST請求詳解
這篇文章主要給大家介紹了關(guān)于scrapy-redis源碼分析之發(fā)送POST請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用scrapy-redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Python2和Python3中print的用法示例總結(jié)
在Python 3中接觸的第一個很大的差異就是縮進是作為語法的一部分,這和C++等其他語言確實很不一樣,所以要小心,其中python3和python2中print的用法有很多不同,這篇文章主要給大家介紹了關(guān)于Python2和Python3中print用法的相關(guān)資料,需要的朋友可以參考下。2017-10-10
淺談python實現(xiàn)Google翻譯PDF,解決換行的問題
今天小編就為大家分享一篇淺談python實現(xiàn)Google翻譯PDF,解決換行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11

