• Python中beautifulsoup学习笔记一


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

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

    Tag , NavigableString , BeautifulSoup 几乎覆盖了html和xml中的所有内容,但是还有一些特殊对象.

    BeautifulSoup 对象本身一定会包含子节点,也就是说<html>标签也是 BeautifulSoup 对象的子节点

    在HTML文档中TreeBuliders的选择是基于解释器创建的优先级。首先是lxml,然后是html5lib,最后是html.parser。

    print(soup.prettify()) #html有顺序

    唯一的区别是 find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果.

    soup.head.title 是 tag的名字 方法的简写.这个简写的原理就是多次调用当前tag的 find() 方法:

    • 要解析的文档是什么类型: 目前支持, “html”, “xml”, 和 “html5”
    • 指定使用哪种解析器: 目前支持, “lxml”, “html5lib”, 和 “html.parser”

    HTML解析器之间也有区别,如果被解析的HTML文档是标准格式,那么解析器之间没有任何差别,只是解析速度不同,结果都会返回正确的文档树.

    但是如果被解析文档不是标准格式,那么不同的解析器返回结果可能不同.下面例子中,使用lxml解析错误格式的文档,结果</p>标签被直接忽略掉了:

    BeautifulSoup("<a></p>", "lxml")
    # <html><body><a></a></body></html>

     

    典型案例:

    find_all( name , attrs , recursive , text , **kwargs )
    find( name , attrs , recursive , text , **kwargs )

  • 相关阅读:
    12.22冲刺总结
    Android远程服务
    短信电话监听
    Android本地服务
    意图
    多线程下载
    异步HTTP请求
    提交数据到服务器
    通过HTTP访问网络资源
    观察者
  • 原文地址:https://www.cnblogs.com/haixianglan/p/13942913.html
Copyright © 2020-2023  润新知