一耳鸯、selenium
selenium+phatomjs和selenium+chrome
selenium:是一種用于web程序測試的工具竞川,selenium測試的代碼可以直接運行在瀏覽器中,就像真正的用戶操作一樣登淘。
在寫python爬蟲的時候,主要是用selenium的webdriver 來驅(qū)動瀏覽器進行相關(guān)的操作
安裝:pip install selenium
selenium中元素查找:
find_element_by_id()
find_elements_by_name()
find_elements_by_xpath()
find_elements_by_tag_name()
find_elements_by_class_name()
find_elements_by_css_selector()
find_elements_by_link_text()
事件
click() 點擊
send_keys()
switch_to_alert()
chromedriver:谷歌瀏覽器驅(qū)動
加載方法如下:
法一:driver = webdriver.Chrome(r'/Users/fanjianbo/Desktop/chromedriver')
法二:把chromedriver的目錄配成環(huán)境變量路徑箫老,然后:driver = webdriver.Chrome()
【注意】chromedriver的版本要和chrome瀏覽器相對應,不然很多功能不能用
下載操作谷歌瀏覽器驅(qū)動的頁面:http://chromedriver.storage.googleapis.com/index.html 或者 http://npm.taobao.org/mirrors/chromedriver/2.37/
谷歌驅(qū)動和谷歌瀏覽器版本之間的映射表:http://blog.csdn.net/huilan_same/article/details/51896672
phantomjs:無界面瀏覽器
加載方法如下:
法一:driver = webdriver.PhatomJS("C:\Users\ZBLi\Desktop\1706\day04\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe")
法二:把phantomjs拷貝到c盤下黔州,并把bin目錄配置成環(huán)境變量耍鬓,然后driver = webdriver.PhatomJS()
【注意】phantomjs目前已經(jīng)不再更新
下載地址:http://phantomjs.org/download.html
二、使用
- 使用chrome瀏覽器
# 導入selenium工具
from selenium import webdriver
# 給瀏覽器加入無頭瀏覽器流妻,使得調(diào)取瀏覽器的時候不需要打開牲蜀,只需要調(diào)用其內(nèi)核即可
opt = webdriver.ChromeOptions()
opt.add_argument("--headless")
# 根據(jù)驅(qū)動所在的路徑創(chuàng)建出一個瀏覽器對象
driver = webdriver.Chrome()
#driver對象可以通過操作瀏覽器
driver.get("http://www.baidu.com/")
# 獲取頁面上的某個標簽元素
btn = driver.find_element_by_link_text("新聞")
# print(btn)
# 點擊方法 .click()
btn.click()
# 找到輸入框,寫入內(nèi)容方法 .send_keys()
input = driver.find_element_by_id("kw")
input.send_keys("贛南王昱珩")
driver.find_element_by_id("su").click()
# 對于爬蟲來說,更關(guān)注做了某些操作之后得到的網(wǎng)頁源碼是什么
html = driver.page_source # 獲取頁面源碼
with open("baidu.html",'w',encoding='utf-8') as fp:
fp.write(html)
driver.quit()
- 使用PhantomJS無頭操作
from selenium import webdriver
driver =webdriver.PhantomJS()
driver.get("http://www.baidu.com/")
# print(driver.page_source)
# 保存截屏方法 .save_screenshot()
driver.save_screenshot("./baidu.jpg")