BeautifulSoup的使用

1、初始化BeautifulSoup对象

url = 'https://hr.163.com/position/list.do?workPlaceStr=1&currentPage=1'
resp = requests.get(url, headers=HEADERS)
html = resp.text
soup = BeautifulSoup(html, 'lxml')

在初始化BeautifulSoup对象时,我们需要指定一个引擎:lxml

2、find_all的使用

1.在提取标签的时候,第一个参数是标签的名字。然后如果在提取标签的时候想要使用标签属性进行过滤,那么可以在这个方法中通过关键字参数的形式,将属性的名字以及对应的值传进去。或者使用‘attrs’属性,将所有的属性以及对应的值放在一个字典中传给‘attrs’属性
2.有些时候,在提取标签的时候,不需要提取那么多,就可以使用‘limit’参数,限制提取的个数

a_s = soup.find_all('a', limit=3)

3、find与find_all的区别

1.find:找到第一个满足条件的标签就返回
2.find_all:将所有满足条件的标签返回,返回的为列表

4、使用find和find_all的过滤条件

1 关键字参数:将属性名字作为关键字参数的名字,以及属性的值作为关键字参数的值进行过滤
2 attrs参数:将属性条件放到一个字典中,传给attrs参数

print(soup.find(title='社会招聘'))

5、获取标签的属性

1.通过下标获取:通过标签的下标方式

print(soup.find(title='社会招聘'))
返回值:<a class="logo" href="/" title="社会招聘">社会招聘</a>

2.通过attrs属性获取:

print(soup.find(title='社会招聘').attrs['title'])

strings和stripped_strings、string属性以及get_text方法

1、string: 获取某个标签下的非标签字符。返回的是个字符串。需要注意的是:如果在某个标签下存在多行字符串可,就获取不到类。
2、strings: 获取某个标签下的子孙非标签字符串。返回的是个生成器
3、stripped_strings:获取某个标签下的子孙非标签字符串,会去掉空白字符。返回的是个生成器。
4、get_text:获取某个标签下的子孙非标签字符串。不是以列表的形式返回。

css常用选择器

1.根据标签的名字选择,

p{
	background-color: pink;
}

2.根据类名选择,那么要在前边加一个点

.line{
	background-color: pink;
}

3.根据id名字选择,那么要在id前加一个#

#box{
	background-color: pink;
}

4.查找子孙元素。那么要在子孙元素中间有个空格。

#box p{
	background-color: pink;	
}

5.查找直接子元素,那么要在父子元素之间有个>

#box > p{
	background-color: pink;
}

6.根据属性的名字进行查找,那么应该先写标签名字,然后再在括号中写属性的值

input[name='username']{
	background-color: pink;
}

7.根据类名或者id进行查找的时候,如果还需要根据标签名进行过滤。那么可以在类的前面或者id的前面加上标签的名字

div#line{
	background-color: pink;
}

常见的四种对象

1、Tag: BeautifulSoup中所有的标签都是Tag类型,并且BeautifulSoup的对象其实本质上也是一个Tag类型。所以其实一些方法比如find、find_all并不是BeautifulSoup的,而是Tag的
2、NavigableString:继承自Python中的str,用起来就跟使用python的str是一样的。
3、BeautifulSoup:继承自Tag。用于生成BeautifululSoup树的,对于一些查找方法,比如find,find_all这些,其实还是Tag的
4、Comment:继承自NavigableString

contents 和 children

返回某个标签下的直接子元素,其中也包括字符串。他们的区别:
Contents:返回的是一个列表
Children:返回的是一个迭代器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值