@(爬虫学习笔记)[BeautifulSoup]
HTML <=> 标签树 <=> BeautifulSoup
soup = BeautifulSoup('<html>data</html>','html.parser')
BeautifulSoup类基本元素: 1. Tag: <> .. </> 2. Name: <p> .. </p> 的Name就是 ‘p’ 3. Attributes: 标签的属性,字典形式组织,格式:<tag>.attrs 4. NavigableString: 标签内非属性字符串,<> .. </> 中字符串格式:.string 5. Comment: 标签内字符串的注释部分,一种特殊的Comment类型 <!-- .. -->
下行遍历:
<tag>.cotents : 子节点的列表,将<tag> 所有儿子节点存入列表<tag>.children: 子节点的列表的迭代类型,与<tag>.cotents类似<tag>.descendants: 子孙节点的迭代类型上行遍历
<tag>.parent : 节点的父亲标签<tag>.parents:节点先辈的迭代类型平行遍历 <tag>.next_sibling: 返回按照HTML文本顺序的下一个平行节点标签<tag>.previous_sibling: 返回按照HTML文本顺序的上一个平行节点标签<tag>.next_siblings: 迭代类型,返回按照HTML文本顺序的下一个平行节点标签<tag>.previous_siblings: 迭代类型,返回按照HTML文本顺序的上一个平行节点标签<>.prettify()可使标签树显示的更友好,显示为HTML文本和<>及其内容增加’\n’(有缩进和换行)
<>.find_all(name, attrs, recursive, string, **kwargs)
name : 对标签名称的检索字符串,如 <>.find_all('a')返回<a .. /a>attrs : 对标签属性值的检索字符串,可标注属性检索,如
<>.find_all('p', 'course')表示检索<p .... > 中属性值含有‘course’字符的标签,以list返回 ,如[<p class="course">Python is a wonderful general-purpose .... ]<>.find_all(id='link1') 返回[<p .... id='link1' -- >]recursive : 是否对子孙全部检索,默认Ture
string : <>..</>中字符串区域的检索字符串,如<>.find_all(string='basic Pyhton')tips: <tag>(..) 等价于 <tag>.find_all(..)