python爬蟲之selenium和PhantomJS
主要的內容
selenium
phantomjs
谷歌無頭瀏覽器
圖片的懶加載
一 什么是selenium?
介紹
它是python中的一個第三方庫,對外提供的接口可以操作瀏覽器,然后讓瀏覽器完成自動化的操作。
安裝
pip install selenium
!!!這里需要注意的是:要是安裝了還是無法使用這個模塊

報這個錯誤的時候,那么步驟如下
1 進入到Anaconda Navigator這個軟件

2 進入之后,點擊base中的第一個 進入終端

3 進入該界面,在進行下載pip install selenium

4 在次去使用 就不會報錯啦!!!!
如何使用selenium 進行操作呢?
1 獲取某一款瀏覽器的驅動程序(這里我以谷歌瀏覽器為例)
谷歌瀏覽器的驅動下載地址:
http://chromedriver.storage.googleapis.com/index.html
2 如何選擇版本號下載,這里下載的驅動程序必須和瀏覽器的版本統一,可以通過這個網址中提供的版本映射表進行對應
先查看自己谷歌瀏覽器中的版本信息,然后通過映射表進行相應的下載即可
http://blog.csdn.net/huilan_same/article/details/51896672
需求 使用selenium打開百度
from selenium import webdriver
from time import sleep
#驅動路徑 記得前面加r 防止字符轉義
#!!!注意這里必須把驅動程序中的路徑寫完整,后面必須加上這個chromedriver.exe 否則會報錯 執行不成功
driver = webdriver.Chrome('C:\pacong_data\day3\chromedriver.exe')
#用driver打開百度頁面 后面的地址是百度的地址
driver.get('http://www.baidu.com')
# 查找頁面的“設置”選項,發送一個你要搜索的值,並進行點擊
driver.find_element_by_id('kw').send_keys('人民幣')
sleep(2)
#並進行點擊
driver.find_element_by_id('su').click()
sleep(2)
#退出驅動程序
driver.quit()
#使用下面的方法,查找指定的元素進行操作即可
find_element_by_id 根據id找節點
find_elements_by_name 根據name找
find_elements_by_xpath 根據xpath查找
find_elements_by_tag_name 根據標簽名找
find_elements_by_class_name 根據class名字查找
二 phantomjs
PhantomJS是一款無界面的瀏覽器,其操作與上述的操作基本上是一致的,由於無界面,為了我們能夠清楚的看到她的自動化操作流程,它為用戶提供了一個截屏的功能,使用save_screenshot函數實現。
phantomjs實現無界面的操作
from selenium import webdriver
import time
#PhantomJS是一個無頭界面的瀏覽器
#!!!!注意這里的路徑是PhantomJS存放的路徑
browser = webdriver.PhantomJS(r'C:\pacong_data\day3\phantomjs-2.1.1-windows\bin\phantomjs.exe')
url ='http://www.baidu.com/'
browser.get(url)
time.sleep(3)
#進入百度界面 然后截屏
browser.save_screenshot(r'phantomjs\baidu.png')
bd_input = browser.find_element_by_id('kw').send_keys('小豬配齊')
#在此截屏
browser.save_screenshot(r'phantomjs\xiaozhu.png')
time.sleep(3)
bd_sous = browser.find_element_by_id('su').click()
在此截屏
browser.save_screenshot(r'phantomjs\sous.png')
time.sleep(3)
browser.quit()
谷歌無頭瀏覽器(是一款無界面的瀏覽器)
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#這個是一個用來控制chrome以無界面模式打開的瀏覽器
#創建一個參數對象,用來控制chrome以無界面的方式打開
chrome_options = Options()
#后面的兩個是固定寫法 必須這么寫
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
#驅動路徑 谷歌的驅動存放路徑
path = r'C:\pacong_data\day3\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('baid.png')
browser.quit()
