一、無頭瀏覽器(phantomJS)
PhantomJS是一款無界面的瀏覽器,其自動化操作流程和上述操作谷歌瀏覽器是一致的。由於是無界面的,為了能夠展示自動化操作流程,PhantomJS為用戶提供了一個截屏的功能,使用save_screenshot函數實現。
目前PhantomJS瀏覽器官方已停止維護,不建議使用
from selenium import webdriver import time # phantomjs路徑 path = r'PhantomJS驅動路徑' browser = webdriver.PhantomJS(path) # 打開百度 url = 'http://www.baidu.com/' browser.get(url) time.sleep(3) browser.save_screenshot(r'phantomjs\baidu.png') # 查找input輸入框 my_input = browser.find_element_by_id('kw') # 往框里面寫文字 my_input.send_keys('美女') time.sleep(3) #截屏 browser.save_screenshot(r'phantomjs\meinv.png') # 查找搜索按鈕 button = browser.find_elements_by_class_name('s_btn')[0] button.click() time.sleep(3) browser.save_screenshot(r'phantomjs\show.png') time.sleep(3) browser.quit()
二、無頭瀏覽器(谷歌無頭瀏覽器)
由於PhantomJs最近已經停止了更新和維護,所以推薦大家可以使用谷歌的無頭瀏覽器,是一款無界面的谷歌瀏覽器。
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time # 創建一個參數對象,用來控制chrome以無界面模式打開 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') # 驅動路徑 path = r'C:\Users\ZBLi\Desktop\1801\day05\ziliao\chromedriver.exe' # 創建瀏覽器對象 browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options) # 參數添加 # 上網 url = 'http://www.baidu.com/' browser.get(url) time.sleep(3) browser.save_screenshot('baidu.png') # 捕獲(截屏)保存 browser.quit()
三、項目實戰(配置谷歌無頭瀏覽器,爬取豆瓣電影)
from selenium import webdriver from time import sleep import time if __name__ == '__main__': url = 'https://movie.douban.com/typerank?type_name=%E6%81%90%E6%80%96&type=20&interval_id=100:90&action=' # 發起請求前,可以讓url表示的頁面動態加載出更多的數據 path = r'C:\Users\Administrator\Desktop\爬蟲授課\day05\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe' # 創建無界面的瀏覽器對象 bro = webdriver.PhantomJS(path) # 發起url請求 bro.get(url) time.sleep(3) # 截圖 bro.save_screenshot('1.png') # 執行js代碼(讓滾動條向下偏移n個像素(作用:動態加載了更多的電影信息)) js = 'window.scrollTo(0,document.body.scrollHeight)' bro.execute_script(js) # 該函數可以執行一組字符串形式的js代碼 time.sleep(2) bro.execute_script(js) # 該函數可以執行一組字符串形式的js代碼 time.sleep(2) bro.save_screenshot('2.png') time.sleep(2) # 使用爬蟲程序爬去當前url中的內容 html_source = bro.page_source # 該屬性可以獲取當前瀏覽器的當前頁的源碼(html) with open('./source.html', 'w', encoding='utf-8') as fp: fp.write(html_source) bro.quit()