python爬虫网页解析——beautifulsoup4常用函数

bs库有4种对象

- BeautifulSoup对象
- 标签Tag对象:BeautifulSoup对象通过find和find_all,或直接调用子标签获取的一列或单个对象
- NavigableString对象:表示标签里的文字,而不是标签本身
- Comment对象:用来查找HTML文档的注释标签

BeautifulSoup

from bs4 import BeautifulSoup
bs = BeautifulSoup(markup='', features='html.parser | ...')

对于不标准的HTML字符串,可以自动更正格式。

调用BeautifulSoup对象里的标签时, 如果这个标签不存在,BeautifulSoup会返回None对象;
如果再调用这个None对象下面的子标签,就会发生AttributeError错误。

HTML解析器比较:
html.parser:内置标准库
lxml:速度快、容错能力强。(需要安装C语言库)
xml:速度快、支持XML解析。(需要安装C语言库)
html5lib:容错能力最强。(速度慢)

返回所需信息

bs.prettify() # 将要解析的字符串以标准的缩进格式输出

tag = bs.h1

tag.get_text() # 清除标签,返回一个只包含文字的Unicode字符串

tag.string # 标签的文本内容

tag.name # 标签名

tag.attrs # 由标签的所有属性和属性值组成的字典

tag.attrs['attr'] == tag['attr'] # ‘attr’属性的值

直接调用标签

bs.html.body.h1 == bs.html.h1 == bs.body.h1 == bs.h1 # 直接调用标签

通过标签名和属性查找标签

bs.find(name='') # 根据标签名查找第一个符合条件的标签

bs.find(attrs={}) # 根据标签属性查找第一个符合条件的标签

bs.find(string='str | Pattern') # 根据标签包含的文本查找第一个符合条件的标签

bs.find(name='', recursive=False) # 只查找子标签

bs.find_all(name='') # 根据标签名查找所有符合条件的标签

bs.find_all(attrs={}) # 根据标签属性查找所有符合条件的标签

bs.find_all(string='str | Pattern')  # 根据标签包含的文本查找所有符合条件的标签

bs.find_all(name='', recursive=False) # 只查找子标签

bs.find_all(name='', limit='int') # 获取前i项结果

tag = bs.h1

tag.find_parent() # 返回匹配的父标签

tag.find_parents() # 返回所有匹配的祖先标签

tag.find_next_sibling() # 返回后面匹配的第一个兄弟标签

tag.find_next_siblings() # 返回后面匹配的所有兄弟标签

tag.find_previous_sibling() # 返回前面匹配的第一个兄弟标签

tag.find_previous_siblings() # 返回前面匹配的所有兄弟标签

tag.find_next() # 返回后面匹配的第一个标签

tag.find_all_next() # 返回后面匹配的所有标签

tag.find_previous() # 返回前面匹配的第一个标签

tag.find_all_previous() # 返回前面匹配的所有标签

使用CSS选择器查找标签

bs.select(selector='') # 使用CSS选择器查找标签

通过位置查找标签

tag = bs.h1

tag.contents # 由所有直接子标签组成的列表

tag.children # 所有直接子标签

tag.descendants # 所有子孙标签

tag.parent # 父标签

tag.parents # 祖先标签

tag.next_sibling # 下一个兄弟标签

tag.next_siblings # 后面的所有兄弟标签

tag.previous_sibling # 上一个兄弟标签

tag.previous_siblings # 前面的所有兄弟标签

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值