日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
這樣教都不會(huì)?還得我親自出馬!

本文轉(zhuǎn)載自微信公眾號(hào)「Python技術(shù)」,作者派森醬。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python技術(shù)公眾號(hào)。

成都創(chuàng)新互聯(lián)公司始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)十余年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的營銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:iso認(rèn)證等企業(yè),備受客戶贊譽(yù)。

上次說到了還有別的方法能找到搜索框嗎?答案是當(dāng)然有了。而且為了滿足大部分場(chǎng)景,有很多方法可以定位元素。今天就來繼續(xù)跟大家一起學(xué)習(xí)下 Python 如何使用 Selenium 進(jìn)行自動(dòng)化操控瀏覽器。

定位元素

如果想操作一個(gè)網(wǎng)頁上面的一個(gè)元素,無論點(diǎn)擊、輸入、拖拽等等任何操作,第一步就是定義元素。因?yàn)槊總€(gè)元素對(duì)象又包含很多個(gè)屬性,所以我們就能通過這些屬性一項(xiàng)或幾項(xiàng)輕松的找到它。

以下是幾種常用的定位元素的方法:

  • find_element_by_id():通過元素的 id 屬性來定位,這是最常見的定位方式,一般網(wǎng)頁包含的所有元素中,id 屬性是唯一的,定位速度快而且準(zhǔn)確,首選推薦。
  • find_element_by_name():通過元素的 name 屬性來定位,這是次要推薦方式,有些元素沒有 id ,但基本都有 name,但可能存在重名。
  • find_element_by_class_name():通過元素的 class 屬性來定位,一般 HTML 中元素都會(huì)有 class 用來做樣式描述。
  • find_element_by_link_text():這個(gè)是通過 對(duì)應(yīng)的鏈接文本對(duì)象來定位的,僅用于文本有超鏈接的時(shí)候。
  • find_element_by_partial_link_text():同 find_element_by_link_text() 相似,但可以只是超鏈接文本的一部分。
  • find_element_by_tag_name():可以通過元素的 tag name 來定位,但這個(gè)很容易會(huì)重復(fù),同時(shí)返回多個(gè)元素。
  • find_element_by_css_selector():這個(gè)是通過 css 來定位的。CSS 是一種樣式表語言,用來渲染元素樣式的,是網(wǎng)頁元素的重要組成部分。
  • find_element_by_xpath():這是一種可以通過 HTML 結(jié)構(gòu)進(jìn)行定位,可以通過根節(jié)點(diǎn)開始一層層定位,找到最終的元素。但這種方式在文檔結(jié)構(gòu)產(chǎn)生變化的時(shí)候可能會(huì)失效,所以不太推薦。

這么多的定位方法,基本上就能滿足大部分場(chǎng)景的需求了。還有一些其他的方法這里就不再說了。

下面我把這些定位的例子列出來,大家就能知道該如何使用:

 
 
 
 
  1. // 導(dǎo)入 webdriver 
  2. from selenium import webdriver 
  3.  
  4. // executable_path 用于指定driver存放路徑 
  5. browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver') 
  6. // 打開百度頁面 
  7. browser.get('https://wwww.baidu.com/') 
  8. // 在搜索框內(nèi)輸入 `python selenium` 并點(diǎn)搜索返回結(jié)果 
  9. browser.find_element_by_id("kw").send_keys("python selenium") 
  10. // name 屬性定位 
  11. browser.find_element_by_name("wd").send_keys("python selenium") 
  12. // class name 屬性定位 
  13. browser.find_element_by_class_name("s_ipt").send_keys("python selenium") 
  14. // 鏈接 text 屬性定位 
  15. browser.find_element_by_link_text("關(guān)于百度").click() 
  16. // tag name 屬性定位 
  17. browser.find_element_by_tag_name("input").send_keys("python selenium") 
  18. // CSS 方式定位 
  19. browser.find_element_by_css_selector("#kw").send_keys("python selenium") 
  20. // xpath 方式定位 
  21. browser.find_element_by_xpath("http://input[@id='kw']").send_keys("python selenium") 
  22. // 點(diǎn)擊 百度一下 按鈕 
  23. browser.find_element_by_id("su").click() 

元素是定位到了,接下來就是看要如何操作元素對(duì)象了

操作元素

上面我們說了元素是怎么定位找到的,那定位找到元素以后,我們又能對(duì)它進(jìn)行什么操作呢,下面我就來一個(gè)個(gè)說下:

  • send_keys():這是最常用的,就是對(duì)元素模擬按鍵操作,輸入你參數(shù)中傳入的字符串,主要用來操作文本輸入框時(shí)使用。
  • click():這個(gè)方法也是比較常用的,就是對(duì)元素對(duì)象進(jìn)行鼠標(biāo)單擊操作,主要用來操作按鈕或超鏈接文本時(shí)使用。
  • submit():如果是操作表單,則可以調(diào)用這個(gè)方法進(jìn)行表單內(nèi)容提交。
  • clear():如果對(duì)象有可以清除的內(nèi)容,比如文本輸入框,則清除已輸入的內(nèi)容。
  • text():這個(gè)方法主要用來獲取元素的文本內(nèi)容。

操作實(shí)例

好了,上面介紹那么多,現(xiàn)在我們來看一個(gè)實(shí)際的例子:

讓瀏覽器自動(dòng)輸入 https://www.jd.com/,打開京東官網(wǎng),然后搜索 ps5國行,并把搜索出來商品的名稱和金額打印出來。

例子不復(fù)雜,我們直接來看代碼:

 
 
 
 
  1. # 導(dǎo)入庫 
  2. from selenium import webdriver 
  3. import time 
  4.  
  5. # executable_path 用于指定driver存放路徑 
  6. browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver') 
  7. # 打開京東官網(wǎng) 
  8. browser.get('https://www.jd.com/') 
  9.  
  10. # browser.find_element_by_id("kw").send_keys("python selenium") 
  11.  
  12. # 獲取輸入框?qū)ο?nbsp;
  13. search = browser.find_element_by_xpath('//*[@id="key"]') 
  14.  
  15. # 輸入想要搜索的關(guān)鍵詞,如"ps5國行" 
  16. search.send_keys('ps5國行') 
  17.  
  18. # 獲取搜索按鈕對(duì)象并單擊 
  19. browser.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click() 
  20.  
  21. # 將滾動(dòng)條移動(dòng)到頁面底部,用于加載所有信息 
  22. javascript = "var q=document.documentElement.scrollTop=50000" 
  23. # 執(zhí)行 javascript 移動(dòng)滾動(dòng)條 
  24. browser.execute_script(javascript) 
  25. # 等待3秒,有些異步加載的數(shù)據(jù)加載慢 
  26. time.sleep(3) 
  27.  
  28. # 通過查看頁面源碼得到金額的 xpath 路徑,并獲取金額  
  29. prices = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[2]/strong/i') 
  30. # 通過查看頁面源碼得到商品標(biāo)題的 xpath 路徑,并獲取商品標(biāo)題 
  31. names = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[3]/a/em') 
  32.  
  33. # 遍歷打印出當(dāng)前頁所有標(biāo)題和金額 
  34. for name,price in zip(names,prices): 
  35.     print(name.text.replace('\n',''),price.text) 
  36.  
  37. #退出瀏覽器 
  38. browser.quit() 

代碼中我已經(jīng)對(duì)每一行做了注釋,讓大家能看明白每一行都是做什么的。接下來我們直接運(yùn)行代碼 python test.py,可以看到瀏覽器自動(dòng)啟動(dòng)后,執(zhí)行相關(guān)操作,然后退出,下面是執(zhí)行中的截圖:

執(zhí)行完成后,我們可以看到控制臺(tái)已經(jīng)打印出來相應(yīng)信息:

總結(jié)

好了,今天我們又介紹了下 selenium 定位元素的多種方法,以及我們找到元素后,可以對(duì)它進(jìn)行什么操作。并寫了一個(gè)自動(dòng)化操作的簡(jiǎn)單例子,給大家學(xué)習(xí)參考,后續(xù)還會(huì)為大家介紹更多。


當(dāng)前標(biāo)題:這樣教都不會(huì)?還得我親自出馬!
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/dpdidgh.html