1. 程式人生 > >Selenium+phanmJs 操作瀏覽器 爬取資料

Selenium+phanmJs 操作瀏覽器 爬取資料

什麼是selenium?

是Python的一個第三方庫,對外提供的介面可以操作瀏覽器,然後讓瀏覽器完成自動化的操作。  

環境搭建

安裝selenum:pip install selenium

獲取某一款瀏覽器的驅動程式(以谷歌瀏覽器為例)

谷歌瀏覽器驅動下載地址:http://chromedriver.storage.googleapis.com/index.html

下載的驅動程式必須和瀏覽器的版本統一,大家可以根據http://blog.csdn.net/huilan_same/article/details/51896672中提供的版本對映表進行對應

 1 from selenium import webdriver # 是Python的一個第三方庫,對外提供的介面可以操作瀏覽器,然後讓瀏覽器完成自動化的操作。  
2 import time 3 4 #建立一個瀏覽器物件,將驅動程式載入到瀏覽器中 5 bro=webdriver.Chrome(executable_path=r'D:\爬蟲相關\資料\驅動程式\chromedriver_win32\chromedriver.exe') 6 bro.get('https://www.baidu.com') 7 time.sleep(3) 8 #定位百度的文字輸入框 9 input_text=bro.find_element_by_id('kw') 10 #在文字框中錄入一個關鍵字 11 input_text.send_keys('絲襪美女') 12
time.sleep(1) 13 #獲取搜尋id 14 btn=bro.find_element_by_id('su') 15 #執行點選事件 16 btn.click() 17 time.sleep(3) 18 #關掉瀏覽器 19 bro.quit()
Selenium爬蟲程式碼
 1 #基於phantomJs瀏覽器的程式碼示例 無介面 ,但是可以截圖
 2 from selenium import webdriver # 是Python的一個第三方庫,對外提供的介面可以操作瀏覽器,然後讓瀏覽器完成自動化的操作。  
 3 import time
 4 
 5
#建立一個瀏覽器物件,將驅動程式載入到瀏覽器中 6 bro=webdriver.PhantomJS(executable_path=r'D:\爬蟲相關\資料\驅動程式\phantomjs-2.1.1-windows\bin\phantomjs.exe') 7 bro.get('https://www.baidu.com') 8 time.sleep(3) 9 #進行截圖 10 bro.save_screenshot('1.png') 11 #定位百度的文字輸入框 12 input_text=bro.find_element_by_id('kw') 13 #在文字框中錄入一個關鍵字 14 input_text.send_keys('絲襪美女') 15 time.sleep(1) 16 #獲取搜尋id 17 btn=bro.find_element_by_id('su') 18 #執行點選事件 19 btn.click() 20 time.sleep(3) 21 bro.save_screenshot('2.png') 22 #列印頁面資料 23 print(bro.page_source) 24 #關掉瀏覽器 25 bro.quit()
PhanmJs爬蟲程式碼
 1 #登入qq空間
 2 bro = webdriver.Chrome(executable_path=r'D:\爬蟲相關\資料\驅動程式\chromedriver_win32\chromedriver.exe')
 3 bro.get('https://qzone.qq.com/')
 4 #觀察某個標籤如果是存在一個frame中的話,必須使用switch_to進行指定
 5 bro.switch_to.frame('login_frame')
 6 bro.find_element_by_id('switcher_plogin').click()
 7 userName = bro.find_element_by_id('u')
 8 userName.send_keys('qq號')
 9 pwd = bro.find_element_by_id('p')
10 pwd.send_keys('qq密碼')
11 time.sleep(2)
12 btn = bro.find_element_by_id('login_button')
13 btn.click()
14 time.sleep(5)
15 bro.quit()
自動登入QQ空間
 1 #動態造作瀏覽器的滾動條獲取豆瓣電影中更多的電影詳情資料
 2 bro=webdriver.Chrome(executable_path=r'D:\爬蟲相關\資料\驅動程式\chromedriver_win32\chromedriver.exe')
 3 bro.get('https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=')
 4 time.sleep(2)
 5 #獲取頁面的滾動條
 6 bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
 7 time.sleep(2)
 8 page_text=bro.page_source
 9 with open('./豆瓣.html','w',encoding='utf-8')as fp:
10     fp.write(page_text)
動態點選滾動條獲取豆瓣電影資料