Python爬虫学习纪要(二):BeautifulSoup相关知识点2

三、树的搜索:
1)find_all(name, attrs, recursive, string, limit, **kwargs):
该方法将搜索当前Tag对象的所有子节点,并且按照过滤条件得到筛选后对象的列表。

name参数
1.1、传字符串:
# print(soup.findAll('a'))

1.2、传正则表达式:
# import re
  for tag in soup.findAll(re.compile('^b')):
      print(tag.name)

1.3、传列表:
# soup.findAll(['a', 'b'])

1.4、传True:(注:True参数将匹配文档中所有的节点,但是不包括文本字符串)
# for tag in soup.findAll(True):
      print(tag.name)

1.5、传入函数:(注:可以根据函数返回值的True/False来得到匹配的节点)
# def has_class_but_no_id(tag):
      return tag.has_attr('class') and not tag.has_attr('id')

# soup.findAll(has_class_but_no_id)

关键字参数
可以传入一个或者多个关键字,BeautifulSoup会搜索当前Tag下的每一个节点的该关键字及其对应的值。
# soup.findAll(href=re.compile('elsie'), id='link1')
# soup.findAll('a', class_='sister') 注:class是python的关键字,所以要特殊处理

text参数
# soup.findAll(text='Elsie')

limit参数
# soup.findAll('a', limit=2)

recursive参数
将该参数设为False可限制只搜索当前Tag的直接子节点

2)find( name , attrs , recursive , text , **kwargs ):
与 findAll方法唯一的区别是findAll方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果

3)  find_parents()和find_parent():
用来搜索当前节点的父辈节点,搜索方法与普通tag的搜索方法相同,搜索文档搜索文档包含的内容

4) find_next_siblings()和find_next_sibling():
这2个方法通过 .next_siblings 属性对当 tag 的所有后面解析的兄弟 tag 节点进行迭代, find_next_siblings() 方法返回所有符合条件的后面的兄弟节点,find_next_sibling() 只返回符合条件的后面的第一个tag节点

5) ind_previous_siblings()和find_previous_sibling():
这2个方法通过 .previous_siblings 属性对当前 tag 的前面解析的兄弟 tag 节点进行迭代, find_previous_siblings()方法返回所有符合条件的前面的兄弟节点, find_previous_sibling() 方法返回第一个符合条件的前面的兄弟节点

6)find_all_next()和find_next():
这2个方法通过 .next_elements 属性对当前 tag 的之后的 tag 和字符串进行迭代, find_all_next() 方法返回所有符合条件的节点, find_next() 方法返回第一个符合条件的节点

7)find_all_previous()和find_previous():
这2个方法通过 .previous_elements 属性对当前节点前面的 tag 和字符串进行迭代, find_all_previous() 方法返回所有符合条件的节点, find_previous()方法返回第一个符合条件的节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值