爬虫-----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”)

猜你喜欢

转载自blog.csdn.net/qq_43475097/article/details/84141654
今日推荐