BeautifulSoup简记

对象类型

  • BeautifulSoup对象
  • Tag对象
  • NavigableString对象
html_doc = """
<html><head><title>The Dormouse's story</title></head>

<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'lxml')

第一部分: 文档结构

# 得到文档结构中第一个符合条件的元素,Tag对象
soup.a # <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,

# 处理子节点关系
soup.body.contents #contents获得的是一个数组
soup.body.children # children 获得的是一个可迭代的对象
soup.body.descendants

# 获取字符串内容
soup.body.string # 只能得到其第一层子节点的字符串内容,多个子节点则无法解析
soup.body.strings # 多个子节点是strings得到一个列表
soup.body.stripped_strings # 去掉多余的回车和空格行

# 父节点
soup.body.parent # 顶层节点时BeautifulSoup对象
soup.body.parents

# 兄弟节点
soup.body.nex_sibling
soup.body.next_siblings
soup.body.previous_sibling
soup.body.previous.siblings

# soup.body.next_elements/element
# soup.body.previous_elements/element

第二部分:使用条件搜索文档树

soup.body.find()
soup.body.find_all()

soup.body.find(['a', 'b'])

soup.body.find_all(name, attrs, recursive, text **kw)

# 每个参数可以接受的数据类型有:"字符串,正则,函数,列表等"

# 第一个参数表示tag匹配'a'或者'b'
# 第一个参数还可以为一个函数,函数返回true或者false,传入的是tag值
# 第二个参数可以指定tag的属性,注意class属性使用class_关键字
# recursive为false表示搜索第一层,text表示搜索匹配字符串
# kw如果不是函数内置的关键字,则被认为是tag的属性进行匹配

# 简化方法:find_all由于很常用,可以通过BeautifulSoup和tag对象
# 的调用方式来方便的调用find_all方法,如下:
soup('a', class_='sister')
soup.find('a', class_='sisiter')

# find , find_parents(), find_parent()
# find_next_siblinhd find_next_sibling()
# find_previous_sibling find_previous_siblings
# 以上这些都和find_all同样的使用方法,同样的参数值。

第三部分:使用css来搜索

soup.select()
# 依赖于标准css选择器

第四部分:修改文档书

# pass,暂时用不上

第五部分: 输出

soup.prettify() # 美化输出
str(soup) # 压缩输出
soup.get_text() # 解析所有的字符串

第六部分:优化内存

strainer = SoupStrainer('a') # 像find_all的参数一样调用创建
# SoupStrainer类型对象
soup = BeautifulSoup(htmldoc, 'lxml', parse_only=strainer)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值