BeautifulSoup使用

来源:互联网 发布:游泳运动员肌肉 知乎 编辑:程序博客网 时间:2024/05/21 17:52

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 bs4print(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 BeautifulSoupimport  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>
原创粉丝点击