BeautifulSoup使用
1.简介
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它能将HTML的标签文件解析成树形结构,然后方便地获取到指定标签的对应属性。
2.安装
安装BeautifulSoup比较简单,直接使用pip命令进行安装,Windows cmd下输入“pip install bs4”然后进入python输入“import bs4 print(bs4)”在这里向大家推荐一个开发python的软件—anaconda使用方便 安装时自带许多模块 免去安装的麻烦。我这里用的anaconda,具体安装配置请看我的另外一篇文章“anaconda安装及使用”
pip install bs4
import bs4
print(bs4)
3.BeautifulSoup解析器
1.python标准库html.parser
用法:BeautifulSoup(markup,”html.parser “)
优势:python的内置标准库执行速度适中文档容错能力强
劣势:在python3.2.2前的版本中文档容错能力差
2.lxml HTML解析器
用法:BeautifulSoup(markup,”lxml”)
优势:速度快文档容错能力强
劣势:需要安装C语言库
3.html5lib解析器
用法:BeautifulSoup(markup,”html5lib”)
优势:最好的容错性,以浏览器的方式解析文档生成HTML5格式的文档
劣势:速度慢不依赖外部扩展
lxml解析速度很快 推荐大家使用!
pip install lxml
4.使用
#! -*- encoding:utf-8 -*-
""""
Beautiful Soup
"""
from bs4 import BeautifulSoup
import codecs
#创建BS并指定解析器
#codes 指定编码集防止乱码
soup=BeautifulSoup(codecs.open('scenery.html','r','utf-8'),'lxml')
print (soup.prettify)
print ('输出所有的ul:',soup.ul)
print ('输出第一个ul:',soup.find('ul'))
print ('输出所有符合条件的ul:',soup.find_all('ul')[1])
print('根据属性值定位:',soup.find('li',attrs={'nu':'2'}))
print('获取标签中的值:',soup.find('li',attrs={'nu':'2'}).get('nu'))
print('获取标签文本中的值',soup.find('li',attrs={'nu':'2'}).a.get_text())#soup.p.string 获取标签的文本内容
scenery.html 如下:
<html>
<head>
</head>
<body>
<div id="content">
<div class="title">
<h3>长沙</h3>
</div>
<ul class="table">
<li>景点<a>价格</a></li>
</ul>
<ul class="content">
<li nu="1">岳麓山<a class="price">60</a></li>
<li nu="2">橘子洲<a class="price">60</a></li>
<li nu="3">岳麓山<a class="price">60</a></li>
</ul>
</div>
</body>
</html>