您的位置:首页 > 编程语言 > Python开发

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

2017-07-26 21:55 555 查看
三、树的搜索:

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()方法返回第一个符合条件的节点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: