学习Python写爬虫的时候,遇到css定位问题,故小结一下css选择器定位的方式
通配符选择器:
* {color:red;}
匹配所有class = ‘important’
*.important {color:red;}
去掉前面通配符也是一样的。
匹配所有p标签下class = ‘important’
p.important {color:red;}
匹配class = ‘important warning’,类名中存在空格分开的情况
.important.warning {background:silver;}
匹配所有id = ‘intro’
#intro {font-weight:bold;}
匹配所有属性是title
*[title] {color:red;}
匹配所有a标签下属性名是href
a[href] {color:red;}
多属性匹配
a[href][title] {color:red;}XML文档也可以实行属性匹配器
planet[moons] {color:red;}
匹配a标签下href = ‘ ’
a[href="http://www.w3school.com.cn/about_us.asp"] {color: red;}匹配多属性值的情况
a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;}
XML文档也可以实行‘属性 ’和 ‘值’ 进行匹配器
planet[moons="1"] {color: red;}
使用‘~’,匹配多个p标签下class名中含有‘important’
p[class~="important"] {color: red;}
下表是对这些选择器的简单总结:
类型 | 描述 |
---|---|
[abc^="def"] | 选择 abc 属性值以 "def" 开头的所有元素 |
[abc$="def"] | 选择 abc 属性值以 "def" 结尾的所有元素 |
[abc*="def"] | 选择 abc 属性值中包含子串 "def" 的所有元素 |
a[href*="w3school.com.cn"] {color: red;}
匹配所有lang属性下以‘en’或以‘en-’开头的所有元素,例如:‘en’,‘en-us’,‘en-au’,不适用‘enen’
*[lang|="en"] {color: red;}
选择器 | 描述 |
---|---|
[attribute] | 用于选取带有指定属性的元素。 |
[attribute=value] | 用于选取带有指定属性和值的元素。 |
[attribute~=value] | 用于选取属性值中包含指定词汇的元素。 |
[attribute|=value] | 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。 |
[attribute^=value] | 匹配属性值以指定值开头的每个元素。 |
[attribute$=value] | 匹配属性值以指定值结尾的每个元素。 |
[attribute*=value] | 匹配属性值中包含指定值的每个元素。 |
后代选择器(descendant selector)又称为包含选择器。
匹配...hello...
的所有元素,两个元素间隔可以是无限的
h1 em {color:red;}
h1 > strong {color:red;}
匹配table标签下class = company,此类结构的所有元素
hello
|
table.company td > p
匹配相同父标签下,h1和p的所有元素
h1 + p {margin-top:50px;}
注:h1和p必须由相同的父标签
html > body table + ul {margin-top:20px;}
匹配第一个p标签或第一个li标签
p:first-child {font-weight: bold;} li:first-child {text-transform:uppercase;}
匹配所有p标签下,第一个li标签
p > i:first-child{font-weight:bold;}
匹配第一个p标签下的所有li标签
p:first-child i{color:blue;}