掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
本文轉載自微信公眾號「Python技術」,作者派森醬。轉載本文請聯(lián)系Python技術公眾號。

成都創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經營理念,通過多達十余年累計超上千家客戶的網站建設總結了一套系統(tǒng)有效的營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:iso認證等企業(yè),備受客戶贊譽。
上次說到了還有別的方法能找到搜索框嗎?答案是當然有了。而且為了滿足大部分場景,有很多方法可以定位元素。今天就來繼續(xù)跟大家一起學習下 Python 如何使用 Selenium 進行自動化操控瀏覽器。
如果想操作一個網頁上面的一個元素,無論點擊、輸入、拖拽等等任何操作,第一步就是定義元素。因為每個元素對象又包含很多個屬性,所以我們就能通過這些屬性一項或幾項輕松的找到它。
以下是幾種常用的定位元素的方法:
這么多的定位方法,基本上就能滿足大部分場景的需求了。還有一些其他的方法這里就不再說了。
下面我把這些定位的例子列出來,大家就能知道該如何使用:
- // 導入 webdriver
- from selenium import webdriver
- // executable_path 用于指定driver存放路徑
- browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver')
- // 打開百度頁面
- browser.get('https://wwww.baidu.com/')
- // 在搜索框內輸入 `python selenium` 并點搜索返回結果
- browser.find_element_by_id("kw").send_keys("python selenium")
- // name 屬性定位
- browser.find_element_by_name("wd").send_keys("python selenium")
- // class name 屬性定位
- browser.find_element_by_class_name("s_ipt").send_keys("python selenium")
- // 鏈接 text 屬性定位
- browser.find_element_by_link_text("關于百度").click()
- // tag name 屬性定位
- browser.find_element_by_tag_name("input").send_keys("python selenium")
- // CSS 方式定位
- browser.find_element_by_css_selector("#kw").send_keys("python selenium")
- // xpath 方式定位
- browser.find_element_by_xpath("http://input[@id='kw']").send_keys("python selenium")
- // 點擊 百度一下 按鈕
- browser.find_element_by_id("su").click()
元素是定位到了,接下來就是看要如何操作元素對象了
上面我們說了元素是怎么定位找到的,那定位找到元素以后,我們又能對它進行什么操作呢,下面我就來一個個說下:
好了,上面介紹那么多,現(xiàn)在我們來看一個實際的例子:
讓瀏覽器自動輸入 https://www.jd.com/,打開京東官網,然后搜索 ps5國行,并把搜索出來商品的名稱和金額打印出來。
例子不復雜,我們直接來看代碼:
- # 導入庫
- from selenium import webdriver
- import time
- # executable_path 用于指定driver存放路徑
- browser = webdriver.Chrome(executable_path='/Users/xx/python/chromedriver')
- # 打開京東官網
- browser.get('https://www.jd.com/')
- # browser.find_element_by_id("kw").send_keys("python selenium")
- # 獲取輸入框對象
- search = browser.find_element_by_xpath('//*[@id="key"]')
- # 輸入想要搜索的關鍵詞,如"ps5國行"
- search.send_keys('ps5國行')
- # 獲取搜索按鈕對象并單擊
- browser.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click()
- # 將滾動條移動到頁面底部,用于加載所有信息
- javascript = "var q=document.documentElement.scrollTop=50000"
- # 執(zhí)行 javascript 移動滾動條
- browser.execute_script(javascript)
- # 等待3秒,有些異步加載的數(shù)據加載慢
- time.sleep(3)
- # 通過查看頁面源碼得到金額的 xpath 路徑,并獲取金額
- prices = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[2]/strong/i')
- # 通過查看頁面源碼得到商品標題的 xpath 路徑,并獲取商品標題
- names = browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li/div/div[3]/a/em')
- # 遍歷打印出當前頁所有標題和金額
- for name,price in zip(names,prices):
- print(name.text.replace('\n',''),price.text)
- #退出瀏覽器
- browser.quit()
代碼中我已經對每一行做了注釋,讓大家能看明白每一行都是做什么的。接下來我們直接運行代碼 python test.py,可以看到瀏覽器自動啟動后,執(zhí)行相關操作,然后退出,下面是執(zhí)行中的截圖:
執(zhí)行完成后,我們可以看到控制臺已經打印出來相應信息:
好了,今天我們又介紹了下 selenium 定位元素的多種方法,以及我們找到元素后,可以對它進行什么操作。并寫了一個自動化操作的簡單例子,給大家學習參考,后續(xù)還會為大家介紹更多。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流