python爬虫:scrapy框架 xpath和css选择器语法

Xpath基本语法:

一、常用的路径表达式:

 

表达式描述实例
nodename选取nodename节点下的所有子节点//div
/从根节点选取/div
//选取所有的节点 不考虑他们的位置//div
.选取当前节点./div
..选取当前节点的父节点..
@选取属性//@class

 

举例元素标签为artical(文章)标签

语法说明
artical选取所有artical元素的子节点
/artical选取根元素artical
./artical选取当前元素下的artical
../artical选取父元素下的artical
. artical/a选取所有属于artical的子元素a元素
//div

选取所有div子元素,无论div在任何地方

artical//div选取所有artical的div元素,无论div元素在artical的任何位置
//@class选取所有名为class的属性
a/@href选取a标签的href属性
a/text()选取a标签下的文本
string(.)解析出当前节点下所有的文字
string(..)解析出父节点下所有文字

二、谓语

谓语被嵌在方括号内,用来查找某个特定的节点或包含某个指定的值的节点

 

语法说明
/artical/div[1]

选取所有属于artical子元素的第一个div元素

/artical/div[last()]选取所有属于artical子元素的最后一个div元素
/artical/div[last()-1]选取所有属于artical子元素的倒数第二个div元素
/artical/div[position()<3]选取所有属于artical子元素的前两个div元素
//div[@class]选取所有拥有属性为class的div节点
//div[@class="main"]选取所有div下class属性为main的div节点
//div[price>3.5]选取所有div下元素值price大于3.5的节点

三、通配符

Xpath通过通配符来选取位置的XML元素

 

 

表达式结果
//*选取所有元素
//div/*选取所有属于div元素的所有子节点
//div[@*]选取所有带属性的元素

四、取多个路径

使用 '|' 运算符可以选取多个路径

表达式结果
//div | //table选取文档中所有的div和table节点
//div/a | //div/p选取所有div元素a和p元素
artical/div/pl | //span选取所有div下的pl和文档中所有span

css选择器语法

语法说明
*

选择所有节点

#container

选择id为container的节点

.container选择所有class包含container的节点
div.p选择所有div元素和所有p元素
li a选取所有li下所有a节点
ul + p选取ul后面的第一个p元素
div#container > ul选取id为container的div的第一个ul子元素
ul ~p选取与ul相邻的所有p元素
a[title]选取所有有title属性的a元素
a[href="http://baidu.com"]选取所有href属性为 http://baidu.com的a元素
a[href*="baidu"]

选取所有href属性值包含baidu的a元素

a[href^="http"]选取所有href属性值中以http开头的a元素
a[href$=".jpg"]选取所有href属性值中以.jpg结尾的a元素
input[type=radio]:checked选择选中的radio的元素
div:not(#container)选取所有id为非container的div属性
li:nth-child(3)选取第三个li元素
li:nth-child(2n)选取第偶数个li元素
a::atttr(href)选取a标签的href属性
a::text选取a标签下的文本

提取内容

方法返回
selector.xpath()返回SelectorList对象
selector.css()返回selectorList对象
selectorList.extract()返回List对象
selectorList.extract_first(default)返回string对象。可以有默认值,类似dict.get(key,default)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值