03-数据解析_BeautifulSoup+CSS选择器(02 select和css选择器)

1-css常用选择器介绍

select方法:

有时使用css选择器的方式可以更加的方便。使用css选择器的语法,应该使用select方法。在BeautifulSoup中,要使用css选择器,那么应该使用“soup.select()”方法,应该传递一个css选择器的字符串给select方法

以下列出几种常用的css选择器方法:

1)通过标签名查找:

print(soup.select("a"))

2) 通过类名查找:

通过类名,则应该在类的前面加一个“.”。比如查找class-sister的标签。示例代码如下:

print(soup.select(".sister"))

3) 通过id查找:

通过id查找,应该在id的名字前面加一个“#”。示例代码如下:

print(soup.select("#link1"))

4)组合查找:

组合查找即和写class文件时,标签名与类名,id名进行组合的原理是一样的,例如查找p标签中,id等于link1的内容,二者需要用空格分开:

print(soup.select("p #link1"))

直接子标签查找,则使用>分隔:

print(soup.select("head > title"))

5)通过属性查找:

查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则无法匹配到。示例代码如下:

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

6)获取内容:

以上的select方法返回的结果都是列表的形式,可以遍历形式输出,然后用get_text()方法来获取它的内容。

soup = BeautifulSoup(html, 'html')
print(tipe(soup.select('title')))
print(soup.select('title')[0].get_text())

for title in soup.select('title'):
    pirnt(title.get_text())

2-select和css选择器提取元素

 

# 需求:
# 1.获取所有tr标签
# 2.获取第2个tr标签
# 3.获取所有class等于even的标签
# 4.获取所有id等于test,class也等于test的a标签提取出来
# 5.获取所有a标签的href属性
# 6.获取所有职位信息(纯文本)

from bs4 import BeautifulSoup 
# html = 'tencent.html'
soup = BeautifulSoup(html, 'lxml')
# 1.获取所有tr标签
trs = soup.select('tr')
for tr in trs:
    print(tr)
# 2.获取第2个tr标签
trs = soup.select('tr')[1]
for tr in trs:
    print(tr)
# 3.获取所有class等于even的标签
# trs = soup.select('tr.even')
# trs = soup.select("tr[class='even'")
for tr in trs:
    print(tr)
# 4.获取所有id等于test,class也等于test的a标签提取出来
# 在css中实现不了
# 5.获取所有a标签的href属性
# css不能完全解决
aList = soup.select('a')
for a in aList:
    href = a['href']
    print(href)
# 6.获取所有职位信息(纯文本)
# css不能完全解决
trs = soup.select('tr')
for tr in trs:
    infos = list(tr.stripped_strings)
    print(infos)
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值