
爬虫笔记:BeautifulSoup详解 part 2
标准选择器find_all
part 1 的选择方式是根据标签名来选择,但现实中不适合,因为一个html文档有很多相同名的标签。这时需要其他选择签
find_all( name , attrs , recursive , text , **kwargs )
可根据标签名、属性、内容查找文档
根据标签名name选择
find_all(‘ul’) 找出ul标签。找出的是所有。返回的是列表形式
标签名name嵌套选择:
利用attrs选择:
attrs接收的是一个字典型参数
可以不用attrs,直接在后面添加属性值
根据文本内容text来选择:
返回的是内容。
标签选择器find
find( name , attrs , recursive , text , **kwargs )
find返回单个元素,find_all返回所有元素
用法和findall一样
find 其他用法:
find_parents() find_parent()
find_parents()返回所有祖先节点,find_parent()返回直接父节点。
#%% md
find_next_siblings() find_next_sibling()
find_next_siblings()返回后面所有兄弟节点,find_next_sibling()返回后面第一个兄弟节点。
find_previous_siblings() find_previous_sibling()
find_previous_siblings()返回前面所有兄弟节点,find_previous_sibling()返回前面第一个兄弟节点。
find_all_next() find_next()
find_all_next()返回节点后所有符合条件的节点, find_next()返回第一个符合条件的节点
find_all_previous() 和 find_previous()
find_all_previous()返回节点后所有符合条件的节点, find_previous()返回第一个符合条件的节点
css选择器
通过select()直接传入CSS选择器即可完成选择
如果是class前加点,如果是id ,前面加#
标签选择前面不用加任何东西:
css选择器获取属性
用[]获取属
css选择器获取文本内容
get_text()获取文本内容
总结
- 推荐使用lxml解析库,必要时使用html.parser
- 标签选择筛选功能弱但是速度快
- 建议使用find()、find_all() 查询匹配单个结果或者多个结果
- 如果对CSS选择器熟悉建议使用select()
- 记住常用的获取属性和文本值的方法
作者:电气-余登武
