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
posted on 2021-11-02 22:42  千丶颜  阅读(363)  评论(0编辑  收藏  举报