关于CSS选择器

关于CSS选择器部分摘自另一博友博文:

原文链接:https://blog.csdn.net/olizxq/article/details/81838212。

关于CSS选择器:

CSS基本语法

    1元素选择器:
        直接选择文档元素
        比如head,p
   2 类选择器:
        元素的class属性,比如<h1 class="important">
        类名就是important
        .important选择所有有这个类属性的元素
        可以结合元素选择器,比如p.important
    3 ID选择器:
        元素的id属性,比如<h1 id="intro">
        id就是intro
        #intro用于选择id=intro的元素
        可以结合元素选择器,比如p#intro
    4 属性选择器:
        选择有某个属性的元素,而不论值是什么。
        *[title]选择所有包含title属性的元素
        a[href]选择所有带有href属性的锚元素
        还可以选择多个属性,比如:a[href][title],注意这里是要同时满足。
        限定值:a[href="www.so.com"]
   5  后代(包含)选择器:
        选择某元素后代的元素(层级不受限制)
        选择h1元素的em元素:h1 em
    6 子元素选择器:
        范围限制在子元素
        选择h1元素的子元素strong:h1 > strong

例1:打印元素的类型和名称

print(type(soup.title))
print(soup.title.name)

例2:选择所有的title标签

print(soup.title)
print(soup.title.string)  # 只打印文本
print(soup.select('title'))

例3:选择所有的p标签中的第1个

print(soup.select('p')[1])

例4:选择body标签下的所有a标签

items = soup.select('body a')
for item in items:
    print(item)

例5:选择body标签下的直接子元素标签a

print(soup.select('body > a'))
print(soup.select('p > a'))

例6:选择id=link1后的所有兄弟节点标签。类名前加点,id名前加#

items = soup.select('#link1 ~ .sister')
for item in items:
    print(item)

例7:选择id=link1后的下一个兄弟节点标签

print(soup.select('#link1 + .sister'))

例1:查找class类名为sister的标签。

items = soup.select('.sister')
for item in items:
    print(item)

例2:查找P标签下class类名为title的标签。

items = soup.select('p.title')
for item in items:
    print(item)

例1:选择id属性为link2的所有标签。

print(soup.select('#link2'))

例2:选择a标签,其id属性为link2的标签。

print(soup.select('a#link2'))

例1:选择id属性为link2和id属性为link3的所有标签。

items = soup.select('#link2, #link3')
for item in items:
    print(item)

例2:选择class属性为title,id属性为link2和id属性为link3的所有标签。

items = soup.select('.title, #link2, #link3')
for item in items:
    print(item)

例:查找a标签下存在herf属性的标签。

items = soup.select('a[href]')
for item in items:
    print(item)

例1:选择a标签,其属性href=http://example.com/elsie的所有标签。

items = soup.select('a[href="http://example.com/elsie"]')
for item in items:
    print(item)

例2:选择a标签,其href属性以http开头的所有标签。

items = soup.select('a[href^="http"]')
for item in items:
    print(item)

例3:选择a标签,其href属性以lie结尾的所有标签。

items = soup.select('a[href$="lie"]')
for item in items:
    print(item)

例4:选择a标签,其href属性包含.com的标签。

items = soup.select('a[href*=".com"]')
for item in items:
    print(item)

例1:首先选中所有的p标签中的第2个标签,然后在该标签中查title的属性值为12的标签。

mytag = soup.select('p')[1]
NA_name = mytag.select('[title="12"]')
print(NA_name)

例2:首先选中所有的p标签中的第2个标签,然后在该标签列表中查找a标签,并将该列表中的第2个标签的文本取出。

mytag = soup.select('p')[1]
href_text = mytag.select('a')[1].get_text()
print(href_text)

例:选择class类名为sister的所有标签中的第一个。

print(soup.select_one('.sister'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值