??--. selenium,phantomJs

1、有界面:selenium

2、無界面:phantomJs

3、無界面:谷歌無頭瀏覽器

4、用phantomJ實現動態加載數據效果

=======================================================html

1、有界面:selenium

selenum:三方庫。能夠實現讓瀏覽器完成自動化的操做。用代碼實現拖動滾輪,點擊鼠標等
環境搭建
  1.安裝:pip install selenium
  2.獲取瀏覽器的驅動程序:
    谷歌瀏覽器驅動下載地址:http://chromedriver.storage.googleapis.com/index.html
    驅動版本與瀏覽器版本對照表:http://blog.csdn.net/huilan_same/article/details/51896672
查找節點方法:
======================================================
#使用下面的方法,查找指定的元素                      +
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名字查找           +
======================================================web

需求一:用selenium實現-打開百度,輸入"美女",點擊"搜索",關閉瀏覽器
from selenium import webdriver
from time import sleep
#建立瀏覽器對象,經過該對象能夠操做瀏覽器,記得前面加r'','r'是防止字符轉義的
bro = webdriver.Chrome(executable_path = r'驅動路徑')
#使用瀏覽器發起get請求打開百度
bro.get("http://www.baidu.com")
#讓百度進行指定詞條的搜索
text = bro.find_element_by_id('kw') #定位到了text文本框
text.send_keys('美女') # 向文本框中錄入指定內容
button = bro.find_element_by_id('su') # 獲取「百度一下」按鈕
button.click() # 點擊操做
bro.quit()chrome

需求二:用selenium實現--操做設置按鈕
from selenium import webdriver
bro = webdriver.Chrome(executable_path = r'驅動路徑')
# 查找頁面的「設置」選項,並進行點擊
bro.find_elements_by_link_text('設置')[0].click()
# 打開設置後找到「搜索設置」選項,設置爲每頁顯示50條
bro.find_elements_by_link_text('搜索設置')[0].click()
# 選中每頁顯示50條
m = bro.find_element_by_id('nr')
m.find_element_by_xpath('//*[@id="nr"]/option[3]').click()
m.find_element_by_xpath('.//option[3]').click()
# 點擊保存設置
bro.find_elements_by_class_name("prefpanelgo")[0].click()
# 處理彈出的警告頁面 肯定accept() 和 取消dismiss()
bro.switch_to_alert().accept()
# 在打開的頁面中找到「Selenium - 開源中國社區」,並打開這個頁面
driver.find_elements_by_link_text('美女_百度圖片')[0].click()
# 關閉瀏覽器
driver.quit()
api

 

2、無界面:phantomJs

PhantomJS是一款無界面的瀏覽器,其自動化操做流程和上述操做谷歌瀏覽器是一致的。
因爲是無界面的,爲了可以展現自動化操做流程,PhantomJS爲用戶提供了一個截屏的功能,使用save_screenshot函數實現。瀏覽器


需求1:用phantomJs實現--打開瀏覽器,輸入「美女」,點擊「搜索」,關閉瀏覽器
from selenium import webdriver
# phantomjs建立瀏覽器
browser = webdriver.PhantomJS(executable_path = r'PhantomJS驅動路徑')
# 打開百度
browser.get("http://www.baidu.com/")
browser.save_screenshot(r'phantomjs\baidu.png')
# 查找input輸入框
my_input = browser.find_element_by_id('kw')
# 往框裏面寫文字
my_input.send_keys('美女')
#截屏
browser.save_screenshot(r'phantomjs\meinv.png')
# 查找搜索按鈕
button = browser.find_elements_by_class_name('s_btn')[0]
button.click()
browser.save_screenshot(r'phantomjs\show.png')
browser.quit() less


3、無界面:谷歌無頭瀏覽器

若是phantomJs不能用,能夠使用這個。函數

Demo:實現打開百度,而後退出
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 建立一個參數對象,用來控制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)
browser.save_screenshot('baidu.png')
browser.quit()ui

 

4、用phantomJ實現動態加載數據效果

需求:獲取豆瓣電影中動態加載出更多電影詳情數據,拖動滾輪到底部,會加載更多電影數據
from selenium import webdriver
bro = webdriver.PhantomJs(executable_path = r'驅動路徑')
#使用瀏覽器發起get請求打開豆瓣電影分類
bro.get("https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action=")
# 編寫js代碼,讓頁面中的滾輪滑動到底部
js = 'window.scrollTo(0,document.body.scrollHeight)'
# 讓瀏覽器執行js代碼
bro.execute_script(js)
# 獲取加載數據後的頁面:page_source獲取瀏覽器當前頁面數據,即滾輪拖動
page_text = bro.page_source
# 解析,略google

相關文章
相關標籤/搜索