selenium爬蟲教學


Selenium爬蟲語法總結

供個人學習需要進行整理

了解網頁的元素和屬性

  • 使用F12打開網頁源代碼
  • 講解部分屬性
    • 非自定義屬性
      • id
      • class
      • div
      • 等等
    • 自定義屬性
      • 開發者自己定義的屬性

加載瀏覽器

  • 導入包
    • from selenium import webdriver
    • from selenium.webdriver.common.by import By(選擇選擇元素的方式)
  • 加載瀏覽器驅動
    • web = webdriver.Chrome(r'chromedriver.exe')
      • WebDriver 對象,指明了瀏覽器驅動的地址
      • web是返回值,對象實例化
  • 獲取網頁

設置最大等待時間

  • web.implicitly_wait(10)

關閉瀏覽器

  • web.quit()

根據id 屬性選擇元素

  • element = web.find_element(By.ID, str)
    • 最新4.0更新后的方法(推薦使用)
  • key=web.find_element_by_id(str)
    • 能用,但是會預警
  • 元素操作
    • element.send_keys(str)

根據class屬性、tag名選擇元素

  • 根據class屬性選擇元素
    • elements = web.find_elements(By.CLASS_NAME, str)
    • 返回的是標簽對象即WebElement對象
    • 取出列表中的每個 WebElement對象,打印出其text屬性的值
      • element.text
  • 根據 tag 名 選擇元素,如div等標簽
    • elements = web.find_elements(By.TAG_NAME, str)
    • 其余方法一致
  • find_element 和 find_elements 的區別
    • 前者選擇單個,后者選擇多個

控制元素

  • 點擊元素
    • element.click()
  • 輸入框
    • 清除輸入框已有的字符串:element.clear()
    • 輸入新字符串:element.send_keys(str)
    • 補充:
      • element.get_attribute('innerText')
      • element.get_attribute('textContent')
  • 獲取元素信息
    • 獲取元素的文本內容
      • element.text
    • 獲取元素屬性
      • element.get_attribute('class')
    • 獲取整個元素對應的HTML
      • element.get_attribute('outerHTML')獲取外部
      • element.get_attribute('innerHTML')獲取內部
    • 獲取輸入框里面的文字
      • element.get_attribute('value')

利用CSS表達式選擇元素

  • web.find_element(By.CSS_SELECTOR, CSS Selector參數)
  • 選擇元素
    • id使用#+id值表示
    • class使用.+class值表示
    • 屬性選擇使用 [屬性名字] [href="http://www.baidu.com"]
      • 選擇屬性值包含某個字符串的元素
        • a[href*="baidu"]
      • 選擇屬性值以某個字符串開頭的元素
        • a[href^="http"]
      • 選擇屬性值以某個字符串結尾的元素
        • a[href$="gov.cn"]
      • 選擇的同時具有多個屬性的元素要
        • div[class="result c-container new-pmd"][id="1"]
    • 其他值可以直接填寫
  • 選擇子元素和后代子元素
    • 直接子元素
      • 元素1 > 元素2
      • 元素1 > 元素2 > 元素3
    • 后代子元素
      • 元素1 元素2
      • 元素1 元素2 元素3
    • 選擇語法聯合使用進行選擇
      • div.foot > span.copy
      • .foot > .copy
      • .foot .copy
  • 組選擇
    • .a , .b
    • id為1里面的span和p元素?
      • #1 > span , p
      • #1 > span , #1 > p
  • 按次序選擇子節點
    • 父元素的第n個子節點
    • 父元素的倒數第n個子節點
      • nth-last-child
      • p:nth-last-child(1)
      • #t1 span:nth-last-child(2)
      • #t1 :nth-last-child(2)
    • 父元素的第幾個某類型的子節點
      • nth-of-type
      • span:nth-of-type(1)
      • div#t1 span:nth-of-type(1)
    • 父元素的倒數第幾個某類型的子節點
      • nth-last-of-type
      • p:nth-last-of-type(2)
      • div p:nth-last-of-type(2)
    • 奇數節點和偶數節點
      • p:nth-child(even)偶數
      • p:nth-child(odd)奇數
  • 兄弟節點選擇
    • 相鄰兄弟節點選擇
      • 使用 “+”
      • h3 后面緊跟着的兄弟節點 span
        • h3 + span
    • 后續所有兄弟節點選擇
      • 使用 “~”
      • h3 后面所有的兄弟節點 span
        • h3 ~ span


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM