安装BeautifulSoup
pip install beautifulsoup4
引用注意大小写
from bs4 import BeautifulSoup
获取一个html
url = 'http://gc.chetianbao.com/admin'
res = requests.get(url)
res.encoding = res.apparent_encoding;
BeautifulSoup解析html html.parser 表示html解析器
soup = BeautifulSoup(res.text,'html.parser');
BeautifulSoup打开本地文件
soup = BeautifulSoup(open('index.html'),'html.parser')
打印格式化 更好的阅读:
print(soup.prettify())
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
- Tag
- NavigableString
- BeautifulSoup
- Comment
Tag
Tag 是什么?通俗点讲就是 HTML 中的一个个标签,例如:
<a>,<div>,<title>
对于 Tag,它有两个重要的属性,是 name 和 attrs
- name: 获取名称 soup.a.name 输出a
print(soup.a.name)
- attrs的方法
#获取所有的属性
print(soup.div.attrs)
#{'class': ['cp-container']}
#获取一个tag的属性
print(soup.p['class'])
#['cp-content-left-small']
NavigableString
NavigableString获取标签内部的文件 使用.string即可,例如
print(soup.p.string)
#哈哈我是文字
来检查一下它的类型
print(type(soup.p.string))
#<class 'bs4.element.NavigableString'>
BeautifulSoup
BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型
print type(soup.name)
#<type 'unicode'>
print soup.name
# [document]
print soup.attrs
#{} 空字典
Comment
Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号
print soup.a
print soup.a.string
print type(soup.a.string)
运行结果如下
<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>
Elsie
<class 'bs4.element.Comment'>