市场调查与分析-bs4-find和find_all方法

from bs4 import BeautifulSoup

html = """
<html><body>
    <tr class="h">
        <td class="1" width="374">职位名称</td>
        <td >职位类别</td>
        <td >人数</td>
        <td >地点</td>
        <td >发布时间</td>
    </tr> 
    <tr class="even">
        <td >22989-金融云区块链高级研发工程师</td>
        <td >技术类</td>
        <td >5</td>
        <td >上海</td>
        <td >2018-1-9</td>
    </tr> 
    <tr class="even">
        <td>22989-高级后台开发</td>
        <td >技术类</td>
        <td >1</td>
        <td >深圳</td>
        <td >2017-11-25</td>
    </tr>       
<div>
    <ui>
        <li class="item-0"><a href="link1.html">first item</a></li>
        <li class="item-1"><a href="link2.html">second item</a></li>
        <li class="item-inactive" id="test"><a href="link3.html"><span class="bold">third item</span></a></li>
    </ui>
</div>>
</body></html>
<b><!--Hey,buddy.want to buy a used parser?--><b>
"""
soup = BeautifulSoup(html, 'lxml')

#获取所有li标签
lis = soup.find_all('li')
for li in lis:
    print(li)
    print('-'*50)

#获取第二个li标签
lis = soup.find_all('li')
print(lis[1])

#获取所有class等于item-0的li标签
lis = soup.find_all('li', class_='item-0') #加下划线防止重名
lis = soup.find_all('li', attrs={'class':'item-0'})
print(lis)

#将所有id等于test,class等于item-inactive的li标签提取出来
lis = soup.find_all('li', class_='item-inactive', id='test')
print(lis)

#获取所有a标签的href属性
as_ = soup.find_all('a')
for a in as_:
    # 1
    # href = a['href']
    # 2
    href = a.attrs['href']
    print(href)

获取所有的职位信息(纯文本)
trs = soup.find_all('tr')[1:]
list = []
for tr in trs:
    print(list(tr.stripped_strings)) #方法一
    infos = {} #方法二
    tds = tr.find_all('td')
    职位名称 = tds[0].string
    职位类别 = tds[1].string
    人数 = tds[2].string
    地点 = tds[3].string
    发布时间 = tds[4].string
    infos['职位名称'] = 职位名称
    infos['职位类别'] = 职位类别
    infos['人数'] = 人数
    infos['地点'] = 地点
    infos['发布时间'] = 发布时间
    list.append(infos)
print(list)

find_all的使用:
1、在提取标签的时候,第一个参数是标签的名字。如果在提取标签的时候想要使用标签属性进行过滤,那么可以在这个方法中通过关键字参数的形式,将属性的名字以及对应的值传进去,或者是使用attrs属性,将所有的属性以及对应的值放在一个字典中传给attrs属性。
2、有时,在提取标签的时候,不想提取那么多,可以使用limit参数限制提取个数。
find与find_all的区别:
1、find:找到第一个满足条件的标签就返回,只返回一个元素。
2、find_all:将所有满足条件的标签都返回,返回多个(以列表的形式)。
使用find和find_all的过滤条件:
1、关键字参数:将属性的名字作为关键字参数的名字,以及属性的值作为关键字参数的值进行过滤。
2、attrs参数:将属性条件放到一个字典中,传给attrs参数。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

juicy-hua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值