网络爬虫之BeautifulSoup入门(三)

10 篇文章 0 订阅
5 篇文章 0 订阅

3.点属性、find、find_all
我们称一个Tag的子节点指其包含的多个字符串或其他的Tag,如上篇1中的例子(不清楚的可以 点此查看),我们可以使用获取tag的name的方法来获取数据,如:

soup.head
# <head><title>The Dormouse's story</title></head>

这种点属性操作可以进行多次操作调用,如:

soup.body.b
# <b>The Dormouse's story</b>

通过点属性的方法只可以获取当前名字的第一个tag值,其用法类似于find,如下:

soup.a
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
soup.find('a')
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>

当然了,有只能查第一个的,就有能查全部的,使用find_all,其返回值是一个列表,用法如下:

soup.find_all('a')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

有么有查找特定的呢?当然是有的了,接下来我们看有条件限制的

4.带更多参数的find_all
这是官方文档给出的find_all方法的所有参数:find_all( name , attrs , recursive , string , **kwargs ),具体参数介绍及使用可查看官方文档

在此我们仅给出部分常用的参数示例

  • 示例一:如上,我们使用find_all,但是加入limit参数“limit=2”,返回结果如下:
soup.find_all("a", limit=2)
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

可以看出,仅仅返回了两个,这是因为我们添加了限制返回数量为2。

  • 示例二:使用find_all,加入keyword参数,如下:
soup.find_all(id='link2')
# [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

以上为查找id为‘link2’的tag并返回,我们亦可使用下面的形式查找含有id属性的tag:

soup.find_all(id=True)
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
  • 示例三:加入css类进行搜索,这在BeautifulSoup4.1.1版本才开始,指定class_参数搜索,如下:
soup.find_all("a", class_="sister")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

文中所举示例并不完全,还有更多的方法和参数使用,如加入正则匹配、字符串等,欲知更多内容还是要详细阅读官方文档介绍,本文仅列举常用的几种。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值