CSS选择器

cssselect:

使用模式标签
选择所有标签*
选择<a>标签a
选择所有class=”link”的元素.link
选择class=”link”的<a>标签a.link
选择id=”home”的<a>标签a#home
选择父元素为<a>标签的所有<span>子标签a > span
选择<a>标签内部的所有<span>标签a span
选择title属性为”Home”的所有<a>标签a[title=Home]

注:标签<a>的markdown语法:

标签markdown语法
<&lt;
>&gt;

安装模块命令
lxmlpip install lxml
cssselectpip install cssselect

语法

1.class带空格时使用.(点)连接,例如:

html = '<div class="page box"><a href="/index/view/">1</a></div>'
tree = lxml.html.fromstring(html)
print tree.cssselect('div.page.box > a')[0].get('href')

输出:

/index/view/

2.css选择器的方法,先看个例子:

# -*- coding: UTF-8 -*-
import lxml.html

html = '<span class="info" title="This is title"><span>first </span><span>second</span></span>'

tree = lxml.html.fromstring(html)
L = tree.cssselect('span.info')
a = tree.cssselect('span.info')[0]
b = tree.cssselect('span.info')[0].text_content()
c1 = tree.cssselect('span.info > span')[0].text_content()
c2 = tree.cssselect('span.info > span')[1].text_content()
d = tree.cssselect('span.info')[0].get('title')
print L, type(L)
print a, type(a)
print b, type(b)
print c1, type(c1)
print c2, type(c2)
print d, type(d)

输出:

[<Element span at 0x102fdf520>] <type 'list'>
<Element span at 0x102fdf520>   <class 'lxml.html.HtmlElement'>
first second                    <class 'lxml.etree._ElementStringResult'>
first                           <class 'lxml.etree._ElementStringResult'>
second                          <class 'lxml.etree._ElementStringResult'>
This is title                   <type 'str'>

注:输出没有做格式化对齐,这里排版是为了方便对比。

可以看出:

  • L是个列表,a是列表中的元素,类型为<class 'lxml.html.HtmlElement'>,目前知道可以调用的方法有text_content()get('title')get('href')

  • 从b可以看出,不具体到子标签可以得到父标签下所有子标签的文本;

  • 从c1, c2可以看出,具体到子标签可以得到相应子标签的文本,分别通过list编号获取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值