Selector对象
作用
用于提取页面中的数据
Scrapy选择器是基于lxml库构建的,这意味着它们的速度和解析精度非常相似
构建
- 从响应构建
1 | >>>response = HtmlResponse(url='http://example.com', body=body) |
- 从文本构建
1 | '<html><body><span>good</span></body></html>' body = |
使用
1 | # 要实际提取文本数据,必须调用选择器的extract()方法 |
XPath使用
表达式
/
根节点(root)
.
当前节点
..
当前节点的父节点
element
选中子节点的所有元素节点
//element
选中后代节点中所有的元素节点
*
选中所有节点的子节点
text()
选中节点的文本值
@attr
选中名为attr的属性节点
@*
选中所有属性节点
[谓语]
使用谓语来查找某个特定的节点或者包含某个特定的值的节点
常用函数
string(arg)
返回参数的字符串值
contains(str1,str2)
判断str1中是否包含str2,返回布尔值
CSS选择器
*
所有元素
element
选中的元素
e1,e2
选中e1和e2元素
e1 e2
选中e1后代元素中的e2元素
e1>e2
选中e1子元素中的e2元素
e1+e2
选中e1兄弟元素中的e2元素
.CLASS
选中CLASS属性包含CLASS的元素
#ID
选中id属性为ID的元素
[attr]
选中包含attr属性的元素
[attr=vaule]
选中包含attr属性且值为vaule的元素
[attr~=vaule]
选中包含attr属性且值包含vaule的元素
E:empty
选中没有子元素的的E元素
E::text
选中E元素的文本节点