Python 处理HTML/XML——Beautiful Soup4

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.

本文为Beautiful Soup属性方法总结,更多例子请查阅官方文档


$ pip install beautifulsoup4    

#debian或Ubuntu下可以
$ apt-get install Python-bs4

加载BeautifulSoup库

>>> from bs4 import BeautifulSoup
>>> a = Beautiful('<html><head></head><body></body></html>')    #创建BeautifulSoup对象


文档解析器

    Beautiful Soup会自动选择一个解析器来解析文档,也可以通过参数来制定使用哪种解析器

            第一次使用BeautifulSoup构造函数如果没有指定解析器,会出现提示,无需担心,后续调用就不会出现该提示

    BeartifulSoup第一个参数为被解析的文档字符串或文件句柄,第二个参数来表示选择什么解析器,

    如果第二个参数为空,则根据当前系统安装的库自动选择解析器,lxml,html5lib,python标准库

>>> BeautifulSoup(markup, "html.parser")   
>>> BeautifulSoup(markup, "lxml")
>>> BeautifulSoup(markup, "lxml-xml")  #使用lxml库解析xml文档
>>> BeautifulSoup(markup, "xml")        
>>> BeautifulSoup(markup, "html5lib")

        推荐使用lxml作为解析器,速度快,容错能力强,效率高

安装lxml

$ pip install lxml

安装html5lib

$ pip install html5lib


Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment .


BeautifulSoup类

BeautifulSoup对象表示一个文档的全部内容,大部分时候,可以把它当作 Tag 对象,它支持遍历文档树和搜索文档树中描述的大部分的方法.

    它的name属性返回字符串'[document]'

    BeautifulSoup没有标签属性,所以无法使用字典索引或attrs属性

NavigableSoup类

        字符串通常被包含在tag对象内,而这些字符串使用NavigableSoup类用来包装

        标签与标签之间的字符串同样会被作为文档的节点,包装为NavigableSoup对象

        NabigableSoup对象支持遍历和搜索的大部分属性方法  但是不能包含其他对象,所以不支持.contents,.strings或find()等针对子节点的方法  

        在tag中包含的NavigableSoup对象可以通过replace_with()方法来替换字符串

          可以通过unicode()函数将NaviableSoup对象转会成Unicode字符串,通常在BeautifulSoup之外使用时进行转换


Comment类

        Comment对象是一个特殊类型的NavigableString对象,包含文档中的注释

Beautiful Soup还定义了一些其他类型CData , ProcessingInstruction , Declaration , Doctype用于处理XML文档,这些类也都是NavigableString类的子类

Tag对象

        tag.name        获取标签名字,可以更改该属性

        tag[attr_name]    获取该标签的attr_name属性,可以更改和添加attr_name属性的值

        tag.attrs            获取该标签的所有属性,返回一个字典

            如果属性为多值属性,则返回一个列表,但是如果该属性在html中没

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值