find直接返回结果,select和find_all返回list
soup.title => tag
tag.name => tag_name
find/find_all用法基本相同
find_all(过滤器)
过滤器:
1 字符串
2 正则表达式
3 列表
4 方法
5 True
参数:find_all(nam,attrs,recursive,text,**kwargs)
find_all(attrs={'name':'maintain'}) #使用字典传入多个属性,可以选择使用tag.name or 不用 : a = s.find_all('a',attrs={'href':'#id4','class':'headerlink'})
find_all(class_='link-list') ; find_all('p',class_='link-list')
find_all(text = 'Overview') => 字符串; find_all('p',text = 'Overview') => [tag],tag 的内容是字符'Overview'; find_all('p',text = re.compile('Beautiful')) =>[tag],tag文本内容包含'Beautiful'
limit 参数:
tag.find_all('a',limit=2)
recursive 参数:
True(默认):检索当前tag所有子孙节点
False:只检索当前所有直接子节点
其他find/find_all:
find_parent()/find_parents(); find_next_sibling()/find_next_siblings(); find_next()/find_all_next(); find_previous()/find_all_previous()
css 选择器(select()):
返回list
直接子节点: tag.select('head > title')
通过类名查找: tag.select('.main-content') 通过id查找: tag.select('#id')
通过是否存在某个属性查找: tag.select('a[href]') #注意href没有引号 tag.select('tr[algin]')
通过属性值来查找: tag.select('a[name="ain-content"]')
修改文档树:
append()方法,用法同python:
<a>fo</a> a.append('bar') => <a>fobar</a>
更深入方法请查看BeautifulSoup官方文档