python 初识CSS选择器

前言:一直是借助gpt来帮我写的,时间长了发现他写的或多或少都不能满足我的意愿,或许是我的文字功底不太行,导致即使借助gpt也会耽误较多的时间

导入模块:

from bs4 import BeautifulSoup

您需要先将html进行解析,下面的介绍很明确了,就直接截图看吧

soup = BeautifulSoup(html,'html.parser')

之后,就是css选择器的使用了,我现在学到了有select和find两个,差异如下
 

语法差异:
select() 方法使用 CSS 选择器语法来选择元素,因此你可以像在 CSS 中一样选择元素。例如,使用 .class 来选择类为 class 的所有元素,使用 #id 来选择 id 为 id 的元素,等等。
find() 方法使用 BeautifulSoup 的特定语法,它接受标签名、属性名和属性值等参数,以一种类似于字典的形式传递。

功能差异:
select() 方法提供了更强大和灵活的选择器语法,允许你使用 CSS 选择器来选择元素。这使得在选择元素时更加直观和便捷。
find() 方法是 BeautifulSoup 最基本的方法之一,它用于从文档中查找第一个匹配的元素,可以通过标签名、属性名和属性值等参数来指定匹配的条件。

返回值:
select() 方法总是返回一个列表(或者空列表),即使只有一个匹配的元素也会以列表的形式返回。
find() 方法返回的是第一个匹配的元素(或者 None),如果没有找到匹配的元素,则返回 None。
如果您不知道下面的soup是啥,就ctrl+F搜索一下soup,看看我文章中出现的第一个soup

先看select

获取全部的a标签:

a = soup.select('a')

注意返回值,如果你想要获得href的值还得继续如下:

for i in a:
  print(i['href'])

下一个,指定a标签的class或者id或者name的属性值:

a = soup.select('a.class')
a = soup.select('a[id="id"]') #id即使是数字也需要打引号
#也有另一种写法:soup.select('a#id')
a = soup.select('a[name="name"]')
如果只要匹配到的第一个,把上边的soup.select换成soup.select_one就好了

如果你想获得a标签的值:先通过上面的方式选择a标签然后看如下代码:
str = a.string
text = a.text                这个a.,往上看5-7行就能看到a了
这两种方式都可以,
.string 属性返回的是字符串对象,如果标签内包含的文本内容是唯一的,则返回字符串;如果包含的内容不止一个,则返回 None。而 .text 属性返回的是包含所有文本内容的字符串,无论其中的文本内容是否唯一

再看find

获取第一个a标签的href属性值:

a = soup.find('a')['href']

想要哪个标签的属性值就按照上面的方式改,

想要指定class或者id或者name

a = soup.find('a',class_='class')['href']
a.soup.find('a',id='id')['href']
a.soup.find('a',name='name')['href']

你要是想要获得全部的匹配项,将.find换成.find_all就好了,但是你还要href属性值就要加两句代码

a = soup.find_all('a')

for i in a:
    print(i['href'])

当然,如果您只想要第二个或者第三个的href属性值:
a = soup.find_all('a')[1]['href']

写的不详细,今天第一次学,有问题可以指出,我改,有不足可以留言,我加上后回复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值