parsel库中css与xpath的简单语法

css语法简单介绍

" * " 选择所有节点
" # container " 选择id为container的节点
" .container " 选择class包含container的节点
"li a " 选择 所有 li 下的所有 a 节点
“ul + p” 选择所有ul后面的第一个p元素
“#container > ul” 选择id为container的第一个ul节点
"a[class] " 选取所有有class属性的a元素
“a[href=“http://b.com”]” 含有href="http://b.com"的a元素
"a[href*=‘job’] " 包含job的a元素
"a[href^=‘https’] " 开头是https的a元素
“a[href$=‘cn’]” 结尾是cn的a元素

css用法实例

  1. response.css(“title ::text”).extract_first(’’) # 获取文本 ‘Example
    website’

  2. response.css("#images ::attr(href)").extract # 获取 id= images
    下的所有href属性 [‘image1.html’, ‘image2.html’, ‘image3.html’,
    ‘image4.html’, ‘image5.html’]

  3. response.css(‘a[href*=image]::attr(href)’).extract # 获取所有包含 image 的
    href 属性 [‘image1.html’, ‘image2.html’, ‘image3.html’, ‘image4.html’,
    ‘image5.html’]

  4. response.css("#images a")[0].css("::attr(href)").extract #
    css选取第一个a标签里面的href属性 [‘image1.html’]

a的相关用法

• response.css(‘a’):返回的是selector对象;
• response.css(‘a’).extract():返回的是a标签对象;
• response.css(‘a::text’).extract_first():返回的是第一个a标签中文本的值;
• response.css(‘a::attr(href)’).extract_first():返回的是第一个a标签中href属性的值;
• response.css(‘a[href*=image]::attr(href)’).extract():返回所有a标签中href属性包含image的值;
• response.css(‘a[href*=image] img::attr(src)’).extract():返回所有a标签下image标签的src属性;

xpath语法简单介绍

在这里插入图片描述

实例:

import parsel
text = '''
<li class="li li-first">
<a href="link.html" img="jaxkbasjgglksjdlkjsdlkfjd.jpg">first item</a>
</li>
'''
sel = parsel.Selector(text)
#contains()方法,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的属性值,就可以完成匹配。
list1 = sel.xpath('//li[contains(@class,"li")]/a/text()').extract()
print(list1)   #['first item']
list2 = sel.xpath('//li/a/@img').extract()
print(list2)   #['jaxkbasjgglksjdlkjsdlkfjd.jpg']
list3 = sel.xpath('//li/a/@href').extract()
print(list3)   #['link.html']
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值