Hom's Blog


Python:BeautifulSoup强大的HTML页面解析

安装和加载:

pip install beautifulsoup4

安装后模块名是bs4, 版本较新.

pip install BeautifulSoup

安装后模块名是BeautifulSoup, 版本较老.

一般首先先加载bs4, 再考虑BeautifulSoup. 为了兼容, 可以:

# Import BeautifulSoup -- try 4 first, fall back to older
try:
    from bs4 import BeautifulSoup
except ImportError:
    try:
        from BeautifulSoup import BeautifulSoup
    except ImportError:
        print('It need BeautifulSoup, sorry...')
        sys.exit(1)

使用

更多细节可以参考官方文档

创建一个HTML的soup顶层对象:

  • BeautifulSoup(string) : 使用html内容创建
  • BeautifulSoup(fileobj) : 使用html文件对象创建

可以指定解析器来解析html, 默认是python的html.parser, 还可以使用lxml, html5lib, 差异参考.

模块内含对象包括: Tag , NavigableString , BeautifulSoup , Comment.

Tag对象 : 就是像html内tag一样, 主要被操作的对象.

属性

  • name : 该tag元素的名字, 对应顶层的soup对象是’[document]’
  • attrs : 最重要属性, 返回该tag所有属性的字典, 包括class, id, name, style, href等. 属性可以用obj['attr']来调用,修改,增加(就是字典嘛). 多值属性返回的可以是list(如class多个).
  • string : tag内内容, 相当于innerHtml
  • parent : 上级的tag对象.

方法:

  • find(name=None, attrs={}, recursive=True, text=None, **kwargs): 例如(name=”div”, attrs={“class”:”abc”}) 可以找到第一个符合的子元素. 可以直接使用属性名=值来简化attrs的指定. 如果只给一个参数, 就是tag对象name的匹配.
  • findAll(name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs): 同样的有find_all方法.
  • prettify(encoding=None, formatter=’minimal’) : 就是将内容变成好看的带缩进的输出格式, 一般配合print使用.
  • get_text(separator=u’’, strip=False, types=(<class ‘bs4.element.NavigableString’>, <class ‘bs4.element.CData’>))) : 获取所有子字符串, 并串联起来. 可以指定串联时使用的separator.


◆ 本文地址: http://platinhom.github.io/2016/01/09/BeautifulSoup/, 转载请注明 ◆

前一篇: sftp命令
后一篇: 必应学术搜索爬虫


Contact: Hom / 已阅读()
Source 类别: Coding  标签: Python  Internet