为了方便使用,将BeautifulSoup库常用的接口写到一起。
总结内容来源:《python3网络爬虫开发实战》崔庆才
导入与解析
from bs4 import Beat
soup = BeautifulSoup(response.text,'lxml')
节点选择器
提取属性
获取到的是第一个标签
soup.title.string
:获取title标签的文本内容soup.title.name
:获取节点名称“title”soup.p.attrs
:获取节点属性字典soup.p.attrs['class']
或者soup.p['class']
:获取节点属性
关联选择
子孙
soup.p.contents
:获取直接子节点列表soup.p.children
:获取直接子节点生成器soup.p.descendants
:获取所有子孙节点生成器
祖先
soup.p.parent
:获取直接父节点soup.p.parents
:获取所有祖先节点生成器
兄弟
soup.a.next_sibling
:获取下一个兄弟节点soup.a.previous_sibling
:获取上一个兄弟节点soup.a.next_siblings
:获取后面所有兄弟节点列表soup.a.previous_siblings
:获取前面所有兄弟节点列表
方法选择器
find_all()
find_all(self, name=None, attrs={}, recursive=True, text=None,limit=None, **kwargs)
用法:
soup.find_all(name='ul')
:获取所有ul节点组成的列表soup.find_all(attrs={'id':'list'})
:获取id为list的节点- 常用参数如id和class可以直接传入,如:
soup.find_all(id = 'list')
或soup.find_all(class_='element')
soup.find_all(text=re.compile('link'))
可以匹配文本,也可以用正则表达式对象
find()
返回第一个匹配的元素,和find_all用法差不多
其他
find_parents()
,find_parent()
find_next_siblings()
,find_next_sibling()
find_previous_siblings()
,find_previous_sibling()
find_all_next()
,find_next()
返回节点后符合条件的节点find_all_previous()
,find_previous()
CSS选择器
soup.select('CSS选择器')
:返回列表