1. 根据 tag名、id、class 选择元素

  1. a. 要选择 所有的tag名为div的元素,就可以是这样
  2. elements = wd.find_elements_by_css_selector('div')
  3. b. 根据id属性 选择元素的语法是在id号前面加上一个井号: #id值
  4. i. element = wd.find_element_by_css_selector('#searchtext')
  5. c. 根据class属性 选择元素的语法是在 class 前面加上一个点: .class
  6. i. elements = wd.find_elements_by_css_selector('.animal')

2. 选择 子元素 和 后代元素

  1. a. 如果 元素2 元素1 直接子元素, CSS Selector 选择子元素的语法是这样的
  2. i. 元素1 > 元素2,中间用一个大于号
  3. b. 如果 元素2 元素1 后代元素, CSS Selector 选择后代元素的语法是这样的
  4. 元素1 元素2
  5. 中间是一个或者多个空格隔开

3. 根据属性选择

  1. a. 比如 <a href="http://www.miitbeian.gov.cn">苏ICP88885574号</a> 里面根据 href选择
  2. b. css 选择器支持通过任何属性来选择元素,语法是用一个方括号 []
  3. element = wd.find_element_by_css_selector('[href="http://www.miitbeian.gov.cn"]')
  4. c. 前面可以加上标签名的限制,比如 div[class='SKnet'] 表示 选择所有 标签名为div,且class属性值为SKnet的元素。
  5. d. 要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写a[href*="miitbeian"]
  6. e. 要选择a节点,里面的href属性以 http 开头 ,就可以这样写a[href^="http"]
  7. f. 选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写a[href$="gov.cn"]
  8. g. 如果一个元素具有多个属性<div class="misc" ctype="gun">沙漠之鹰</div>
  9. a. 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]

4. 验证 CSS Selector

  1. #bottom > .footer2 a

5. 选择语法联合使用

  1. <div id='bottom'>
  2. <div class='footer1'>
  3. <span class='copyright'>版权</span>
  4. <span class='date'>发布日期:2018-03-03</span>
  5. </div>
  6. <div class='footer2'>
  7. <span>备案号
  8. <a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>
  9. </span>
  10. </div>
  11. </div>
  1. CSS selector 表达式 可以这样写:
  1. div.footer1 > span.copyright

6. 组选择(或的关系)

  1. a. 如果要同时选择所有classplantanimal的元素,怎么办?
  2. a. CSS选择器可以使用逗号,称之为组选择
  3. .plant , .animal

7. 按次序选择子节点

  1. a. 指定选择父元素的第几个节点-----使用
  2. nth-child
  3. 例如:选择第2个子元素,并且是span类型
  4. span:nth-child(2)
  5. b. 父元素的倒数第n个节点----使用
  6. nth-last-child
  7. 例如:选择p元素的倒数第一个子元素
  8. p:nth-last-child(1)
  9. c. 父元素的第几个某类型的子节点
  10. 例:选择第一个span类型
  11. span:nth-of-type(1)
  12. d. 父元素的倒数第几个某类型的子节点
  13. 例:选择父元素的倒数第2个节点
  14. p:nth-last-of-type(2)
  15. e. 奇数节点和偶数节点
  16. 奇数:nth-chile(odd)
  17. 偶数:nth-child(even)

8. 兄弟节点的选择

  1. a. 相邻兄弟节点的选择
  2. 例:选择h3后面紧跟着的兄弟节点span
  3. h3+span
  4. b. 后续所有兄弟节点的选择
  5. 例:选择h3后面所有的兄弟节点span
  6. h3~span