Beautiful Soup是一个很是流行的Python模块。该模块能够解析网页,并提供定位内容的便捷接口。html
使用下面两个命令安装:python
pip install beautifulsoup4
或者 sudo apt-get install Python-bs4
app
若是想安装最新的版本,请直接下载安装包来手动安装,也是十分方便的方法。spa
在这里我安装的是 Beautiful Soup 4.5.13d
下载完成以后把解压包放到site-package目录下,cd到解压包中,运行下面的命令便可完成安装:code
sudo python setup.py installxml
而后须要安装lxml:htm
sudo apt-get install Python-lxmlblog
使用Beautiful Soup的第一步是将已下载的HTML内容解析为soup文档
。
接口
因为大多数网页都不具有良好的HTML格式,所以Beautiful Soup须要对其实际格式进行肯定。
例如,在下面这个简单网页的列表中,存在属性值两侧引号缺失和标签未闭合的问题。
markup ="<b><!--Hey, buddy. Want to buy a used parser?--></b><p>fdsf"
咱们能够看到P标签未闭合。下面让咱们看一下Beautiful Soup是如何处理的。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
markup ="<b><!--This will be used in the crawler--></b><p>It's wonderful"
tags = []
#soup = BeautifulSoup(markup,'html.parser')
#环境问题,可能报错,暂时还没搞懂html.parser和lxml的区别,后续跟进,若是报错,就用下一行的代码
soup = BeautifulSoup(markup,'lxml')
fixed_html = soup.prettify()
print fixed_html
结果以下:
咱们能够看到不只<p>标签补全完整,并且加入了<html>和<body>标签,进行格式化的输出。
下面咱们就能够用findAll()方法查找咱们想要的标签或者内容了。
咱们先打印看一下findAll()获得的标签都是什么?
tags = []
tag = soup.findAll()
for sub in tag:
tags.append(sub.name)
print tags
执行结果以下:
咱们获得了咱们所须要的标签,而后咱们在findAll()中加入想查找的标签。
例如:
sub = soup.findAll('p')
获得结果:
后续将会把该内容应用到爬虫中,对爬虫获得的网页进行解析。