1. 程式人生 > >爬蟲-----selenium------元素定位的方法

爬蟲-----selenium------元素定位的方法

元素定位的方法

1 selenium的定位操作
定位元素語法:

find_element_by_id (返回一個元素)
find_elements_by_xpath (返回一個包含元素的列表)
find_elements_by_link_text (根據連線文字獲取元素列表)
find_elements_by_partial_link_text (根據連結包含的文字獲取元素列表)
find_elements_by_tag_name (根據標籤名獲取元素列表)
find_elements_by_class_name (根據類名獲取元素列表)

注意: find_element和find_elements的區別 by_link_text和by_partial_link_tex的區別:全部文字和包含某個文字

使用: 以豆瓣首頁為例:https://www.douban.com/

    from selenium import webdriver
    
      driver = webdriver.Chrome()
    
      driver.get("https://www.douban.com/")
    
      ret1 = driver.find_element_by_id("anony-nav")
      print(ret1)
      # 輸出為:<selenium.webdriver.remote.webelement.WebElement (session="ea6f94544ac3a56585b2638d352e97f3", element="0.5335773935305805-1")>
ret2 = driver.find_elements_by_id("anony-nav") print(ret2) #輸出為:[<selenium.webdriver.remote.webelement.WebElement (session="ea6f94544ac3a56585b2638d352e97f3", element="0.5335773935305805-1")>] ret3 = driver.find_elements_by_xpath("//*[@id='anony-nav']/h1/a") print
(len(ret3)) #輸出為:1 ret4 = driver.find_elements_by_tag_name("h1") print(len(ret4)) #輸出為:1 ret5 = driver.find_elements_by_link_text("下載豆瓣 App") print(len(ret5)) #輸出為:1 ret6 = driver.find_elements_by_partial_link_text("豆瓣") print(len(ret6)) #輸出為:28 driver.close()

獲取資料語法

find_element僅僅能夠獲取元素,不能夠直接獲取其中的資料,如果需要獲取資料需要使用以下方法:
**獲取文字:element.text
獲取屬性值:element.get_attribute(“href”)

使用示例:

from selenium import webdriver

driver =webdriver.Chrome()

driver.get("https://www.douban.com/")

ret4 = driver.find_elements_by_tag_name("h1")
print(ret4[0].text)
#輸出:豆瓣

ret5 = driver.find_elements_by_link_text("下載豆瓣 App")
print(ret5[0].get_attribute("href"))
#輸出:https://www.douban.com/doubanapp/app?channel=nimingye

driver.close()

小結

  1. 根據xpath定位元素:driver.find_elements_by_xpath("//*[@id=‘s’]/h1/a")
  2. 根據class定位元素:driver.find_elements_by_class_name(“box”)根據class定位元素:driver.find_elements_by_class_name(“box”)
  3. 根據link_text定位元素:driver.find_elements_by_link_text(“下載豆瓣 App”)
  4. 根據tag_name定位元素:driver.find_elements_by_tag_name(“h1”)
  5. 獲取文字內容:element.text 獲取標籤屬性: element.get_attribute(“href”)