1. 根据 tag名、id、class 选择元素
a. 要选择 所有的tag名为div的元素,就可以是这样
elements = wd.find_elements_by_css_selector('div')
b. 根据id属性 选择元素的语法是在id号前面加上一个井号: #id值
i. element = wd.find_element_by_css_selector('#searchtext')
c. 根据class属性 选择元素的语法是在 class 值 前面加上一个点: .class值
i. elements = wd.find_elements_by_css_selector('.animal')
2. 选择 子元素 和 后代元素
a. 如果 元素2 是 元素1 的 直接子元素, CSS Selector 选择子元素的语法是这样的
i. 元素1 > 元素2,中间用一个大于号
b. 如果 元素2 是 元素1 的 后代元素, CSS Selector 选择后代元素的语法是这样的
元素1 元素2
中间是一个或者多个空格隔开
3. 根据属性选择
a. 比如 <a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a> 里面根据 href选择
b. css 选择器支持通过任何属性来选择元素,语法是用一个方括号 []
element = wd.find_element_by_css_selector('[href="http://www.miitbeian.gov.cn"]')
c. 前面可以加上标签名的限制,比如 div[class='SKnet'] 表示 选择所有 标签名为div,且class属性值为SKnet的元素。
d. 要选择a节点,里面的href属性包含了 miitbeian 字符串,就可以这样写a[href*="miitbeian"]
e. 要选择a节点,里面的href属性以 http 开头 ,就可以这样写a[href^="http"]
f. 选择a节点,里面的href属性以 gov.cn 结尾 ,就可以这样写a[href$="gov.cn"]
g. 如果一个元素具有多个属性<div class="misc" ctype="gun">沙漠之鹰</div>
a. 选择的元素要 同时具有多个属性的限制,像这样 div[class=misc][ctype=gun]
4. 验证 CSS Selector
#bottom > .footer2 a
5. 选择语法联合使用
<div id='bottom'>
<div class='footer1'>
<span class='copyright'>版权</span>
<span class='date'>发布日期:2018-03-03</span>
</div>
<div class='footer2'>
<span>备案号
<a href="http://www.miitbeian.gov.cn">苏ICP备88885574号</a>
</span>
</div>
</div>
CSS selector 表达式 可以这样写:
div.footer1 > span.copyright
6. 组选择(或的关系)
a. 如果要同时选择所有class为plant和animal的元素,怎么办?
a. CSS选择器可以使用逗号,称之为组选择
.plant , .animal
7. 按次序选择子节点
a. 指定选择父元素的第几个节点-----使用
nth-child
例如:选择第2个子元素,并且是span类型
span:nth-child(2)
b. 父元素的倒数第n个节点----使用
nth-last-child
例如:选择p元素的倒数第一个子元素
p:nth-last-child(1)
c. 父元素的第几个某类型的子节点
例:选择第一个span类型
span:nth-of-type(1)
d. 父元素的倒数第几个某类型的子节点
例:选择父元素的倒数第2个节点
p:nth-last-of-type(2)
e. 奇数节点和偶数节点
奇数:nth-chile(odd)
偶数:nth-child(even)
8. 兄弟节点的选择
a. 相邻兄弟节点的选择
例:选择h3后面紧跟着的兄弟节点span
h3+span
b. 后续所有兄弟节点的选择
例:选择h3后面所有的兄弟节点span
h3~span